Go语言技术文章
-
MySQL 队列使用 SKIP LOCKED 时,另一个事务未提交的任务可能暂时不出现在结果集。本文解释锁定读语义,并给出短事务、租约和补偿方案。209 收藏 -
Redis Function 适合持久化、可复用的服务端逻辑,临时 Lua 脚本适合由应用按需加载的短逻辑;本文对比两者的部署、版本管理和 EVALSHA 恢复方式。326 收藏 -
MySQL invisible index 可以在不立即删除索引的前提下模拟它离开优化器候选集的影响。本文用 SHOW INDEX、EXPLAIN 和 use_invisible_indexes 对比查询计划,并说明如何安全回滚。263 收藏 -
Redis Lua 脚本返回多个值时,先把结果设计成稳定的索引数组,再按客户端类型解析;本文说明 Lua 表、RESP 数组、Python list、Go 切片和空值之间的映射。125 收藏 -
数据库 · MySQL | 14小时前 | MySQL · 数据库 · 查询排错 · 递归CTE · mysql WITH RECURSIVE cte_max_recursion_depth CTE 递归查询
MySQL 递归 CTE 的安全边界不能只依赖默认报错。本文用层级树示例区分业务深度、cte_max_recursion_depth、递归 LIMIT 和执行超时,并说明如何排查无限展开与环形数据。165 收藏 -
MySQL JSON_VALUE 可以直接参与表达式索引。本文以订单 payload 中的 customer_id 为例,说明如何用 RETURNING UNSIGNED 固定类型、用双括号创建索引、让 WHERE 表达式保持兼容,并处理缺失键、JSON null 与转换错误。406 收藏 -
Redis Stream 多消费组使用 XTRIM 时,KEEPREF 保留 PEL 引用,ACKED 只删除所有消费组都确认过的条目。本文用命令、边界和检查清单说明如何选择。267 收藏 -
用 MySQL EXPLAIN ANALYZE 对比同一迭代器的估算 rows 与 actual rows,判断低估、高估及统计信息失真的处理方向。389 收藏 -
数据库 · Redis | 22小时前 | Redis · 故障恢复 · Streams · 消费者组 · 消息重试 · redis 消费者组 XPENDING XAUTOCLAIM Redis Streams
Redis Streams 消费者异常退出后,消息会留在 PEL 中。先用 XPENDING 观察归属、空闲时间和投递次数,再用 XAUTOCLAIM 接管超时消息,处理成功后用 XACK 完成闭环。380 收藏 -
MySQL 窗口函数按时间排序遇到并列时,使用 ROW_NUMBER() 配合唯一键补序,并在外层筛选 rn = 1,即可稳定地每组只保留一条结果;文中同时比较 RANK() 与 DENSE_RANK() 的适用边界。109 收藏 -
Redis Pipeline 不是批次越大越快。本文从 RTT、回复队列和单批延迟三个角度,给出可落地的批量窗口设计与 Go 实现。181 收藏 -
MySQL 合并多个查询结果时,UNION 默认删除重复整行,UNION ALL 保留所有行。本文从业务语义、列位置、整行去重以及 ORDER BY、LIMIT 的作用范围说明如何选择,避免误删明细或为不必要的去重增加开销。290 收藏 -
Redis Pub/Sub 断线后不能补回已经错过的消息。本文解释至多一次投递的原因,并用 Redis Streams 消费组设计可补读的可靠事件方案。362 收藏 -
MySQL GROUP_CONCAT 结果被截断时,先检查 group_concat_max_len,再按会话、全局和持久配置选择修复方式,并排除字节长度、排序、NULL 与 max_allowed_packet 等边界问题。470 收藏 -
Redis List 队列要把待办任务可靠地交给消费者,推荐用 LMOVE 原子地从 pending 移入 processing,再用 LREM 确认完成;Redis 6.2+ 还可用 BLMOVE 等待任务。499 收藏