Go语言技术文章
-
用 MySQL 窗口函数按分组生成稳定行号,再通过 CTE 或派生表筛选组内分页;同时说明 ROW_NUMBER、RANK、DENSE_RANK 的并列差异。395 收藏 -
MySQL InnoDB 在线新增二级索引时,ALGORITHM 决定变更实现方式,LOCK 表达并发读写要求。本文用场景、决策表和 SQL 示例说明怎么选,以及哪些情况下应让变更直接失败。393 收藏 -
MySQL 8.4 InnoDB 修改大表列类型通常只能使用 ALGORITHM=COPY。本文从表副本、锁、磁盘、异步复制和原子 DDL 五个边界说明如何估算变更窗口与回退方案。393 收藏 -
用 MySQL EXPLAIN ANALYZE 对比同一迭代器的估算 rows 与 actual rows,判断低估、高估及统计信息失真的处理方向。389 收藏 -
连接池复用能减少建连开销,但空闲连接可能已经失效。本文用 Redis PING 和 redis-py 示例说明健康检查、失效连接隔离、连接重建与业务重试的边界。387 收藏 -
通过订单累计示例解释 MySQL 窗口函数 ROWS 与 RANGE 的边界差异,定位并列排序值、默认帧、NULL 和类型限制导致的结果异常。387 收藏 -
MySQL 组合索引不是把高选择性列简单排在最前面,而要先看等值条件、范围条件和排序的连续性。本文用列表查询说明索引列顺序、函数表达式、filesort 与回表如何一起判断。385 收藏 -
MySQL InnoDB 默认 REPEATABLE READ 下,普通 SELECT 读取的是事务快照。本文用两个会话说明新提交为何暂时不可见,以及如何选择 COMMIT、READ COMMITTED 或 FOR SHARE。385 收藏 -
数据库 · Redis | 6天前 | Redis · 故障恢复 · Streams · 消费者组 · 消息重试 · redis 消费者组 XPENDING XAUTOCLAIM Redis Streams
Redis Streams 消费者异常退出后,消息会留在 PEL 中。先用 XPENDING 观察归属、空闲时间和投递次数,再用 XAUTOCLAIM 接管超时消息,处理成功后用 XACK 完成闭环。380 收藏 -
MySQL 用 SUM OVER 计算累计值时,如果希望每个月重新开始,关键不是给 SUM 加条件,而是把包含年份的月份键放进 PARTITION BY,并用稳定的时间与主键排序。本文给出可直接改写的 SQL 和排查清单。380 收藏 -
Redis Lua 返回 RESP3 map 时,客户端是否拿到字典取决于脚本内部的 redis.setresp(3) 与连接侧的 HELLO 3 是否分别配置正确。本文拆开两层协议,说明 RESP2 为何会把 map 展平成交替键值数组,并给出客户端解析检查表。379 收藏 -
Redis 连接池耗尽不等于 Redis 慢。本文用 go-redis PoolStats、SLOWLOG GET 和 CLIENT LIST 区分慢命令、池等待与请求生命周期未结束,并给出修复顺序。378 收藏 -
Redis 的 EXEC 返回 nil/null,通常表示 WATCH 监视的键在提交前被触碰,不能据此判断具体哪个客户端打断了事务。本文区分监视冲突、队列错误和事务内命令错误,并给出带上限的重试写法。377 收藏 -
解释 MySQL 同表 OR 条件何时可能采用 Index Merge,带你从 EXPLAIN 的 type、key、rows、Extra 判断 union 与 sort_union,并通过单语句对照实验评估是否值得保留。373 收藏 -
Redis Cluster 的多 key 命令要求相关 key 位于同一个 hash slot。本文解释 hash tag 的花括号规则,用 CLUSTER KEYSLOT 检查键名,并说明 CROSSSLOT、MOVED、TRYAGAIN 与热点风险的区别。372 收藏