Go语言技术文章
-
Redis OBJECT ENCODING 能直接看到键当前采用的内部编码。本文从内存上涨现场出发,用字符串、Hash 和 Set 的实际命令核对 embstr、listpack、hashtable 等编码,解释压缩阈值变化、自动升级条件和生产复查边界。233 收藏 -
用 Redis ZSET 的 score 表示到期时间,拆清轮询频率、ZPOPMIN 原子取出、重复消费和故障恢复边界,给出一套可落地的延迟任务实现方案。232 收藏 -
MySQL 的 COUNT(DISTINCT) 只统计非 NULL 唯一值。本文用订单示例区分已知客户数、缺失行数和包含 NULL 桶的唯一值数量,并给出分组统计与子查询写法。232 收藏 -
Redis WATCH 事务被放弃时,不要盲目重试所有错误。本文用 Go 示例说明如何识别 TxFailedErr、保持事务连接、设置退避上限并完成反向验证。230 收藏 -
Redis Cluster 使用分片 Pub/Sub 后,频道是否活跃、订阅者到底在哪个节点,不能再只看 PUBSUB CHANNELS。本文用 PUBSUB SHARDCHANNELS、SHARDNUMSUB 和节点范围核对分片频道,拆开模式匹配、活跃定义与故障排查边界。228 收藏 -
围绕一条真实列表查询,拆分过滤、排序和返回字段,给出 MySQL 复合覆盖索引的布局方法、EXPLAIN 检查项,以及范围条件和写入成本的上线边界。228 收藏 -
MySQL 的 ROLLBACK TO SAVEPOINT 会撤销保存点后的数据修改,但不会等同于释放锁。本文区分记录锁、间隙锁和事务结束边界,并用两个会话说明如何排查回滚后的阻塞。226 收藏 -
MySQL 不可见索引适合用来评估索引替代方案:先核对候选索引和基线计划,再让优化器暂时忽略它,结合 EXPLAIN、慢查询与工作负载判断是否仍有依赖,最后决定恢复、替换还是删除。226 收藏 -
用 Redis Lua 脚本把库存校验、扣减和请求记录写入放进同一次执行,配合 KEYS、ARGV、返回码与幂等记录处理重复请求、库存不足和集群键位边界。226 收藏 -
给生产中的 InnoDB 大表新增二级索引时,先确认 ALGORITHM=INPLACE 与 LOCK=NONE 的适用边界,再用 metadata_locks、SHOW FULL PROCESSLIST 和索引状态检查锁窗口、失败回退与上线结果。224 收藏 -
Redis 修改 maxmemory-policy 后,应先用 CONFIG GET 确认运行时策略,再用 INFO stats 记录 evicted_keys 差值。本文给出策略变更、持久化和淘汰计数判断方法。223 收藏 -
Retrieved_Gtid_Set 代表副本已经收到的 GTID 集,不等于已经执行。本文用 GTID_SUBTRACT 区分接收缺口与应用积压,给出可复核的复制状态排查方法。221 收藏 -
Redis Cluster 遇到 CROSSSLOT 时,先用 CLUSTER KEYSLOT 找出不同槽位,再用业务 ID hash tag 重构相关 key,并评估迁移与热点风险。218 收藏 -
从 AOF 多部分文件、fork 与 Copy-on-Write、fsync 和 INFO persistence 指标入手,说明重写期间磁盘增长与延迟抖动的来源,并给出配置和排查方法。218 收藏 -
MySQL 8.4 InnoDB 表空间加密不能只看建表语句:先核对密钥环组件和 ENCRYPTION 状态,再检查 INFORMATION_SCHEMA.INNODB_TABLESPACES,最后用一次受控重启确认恢复链路可用。216 收藏