Go语言技术文章
-
EXPLAIN 的 filtered 很低不等于索引失效。本文用可复现实验拆开 rows、filtered、实际扫描行数与统计信息之间的关系,给出索引、ANALYZE TABLE 和回归验证的判断顺序。205 收藏 -
MySQL 表出现重复审计记录时,不要先删触发器。本文从 SHOW TRIGGERS、SHOW CREATE TRIGGER 和最小写入复现入手,区分多触发器、执行时机、递归写入与连接重试造成的重复。425 收藏 -
Redis 的 EXPIRE 作用在整个 key 上,不能直接给同一个 HASH 的每个 field 设置独立 TTL。本文从用户会话属性和临时状态的场景出发,对比拆 key、时间戳字段、ZSET 索引三种设计,并给出清理任务、并发边界和验收方法。162 收藏 -
Redis 连接池偶发超时,不能只把超时时间调大。本文按命令执行、连接占用和网络往返三层排查,结合 INFO clients、CLIENT LIST 与 SLOWLOG 区分服务端慢、连接池耗尽和客户端等待。182 收藏 -
MySQL 查询明明给条件列建了索引,却因为字符串列与数字参数发生隐式类型转换而扫描变慢。本文用可复现实验说明转换发生在哪里、如何用 EXPLAIN 判断影响,并给出参数类型与字段设计的修复边界。303 收藏 -
MySQL 事务回滚后出现自增主键空洞并不代表数据错乱。本文用 INSERT、ROLLBACK 和并发场景说明 AUTO_INCREMENT 的分配边界,并给出业务编号与主键分工、复核和验收方法。429 收藏 -
Redis 发现疑似大 key 后,先用 TYPE、OBJECT ENCODING 和 MEMORY USAGE 分层确认数据类型、内部编码与实际内存,再决定拆分、限流或迁移,避免只看字符串长度误判。267 收藏 -
Redis Pipeline 能减少网络往返,但批次过大可能让回复堆积、客户端内存上涨,甚至拉高尾延迟。本文用基线、批次对比和分位数验收说明什么时候该拆批。204 收藏 -
EXPLAIN 里的 rows 只是优化器估算要扫描的索引记录数,不等于最终访问数据页的成本。本文用订单列表查询拆开回表、覆盖索引和分页取数的关系,并给出可复现的验收方法。475 收藏 -
Redis Bitmap 很适合保存按天变化的签到状态,但连续天数不能直接用 BITCOUNT 代替。本文从日期偏移、补签规则和查询性能三个角度,给出可验证的存储方案与边界处理。332 收藏 -
删除 MySQL 主表记录时遇到外键失败,原因可能是子表仍有引用、约束动作不是预期,或事务锁尚未释放。本文用订单与订单明细场景区分 RESTRICT、CASCADE 和锁等待,并给出可复现的检查命令。403 收藏 -
Redis 出现偶发慢响应时,LATENCY DOCTOR 能把采样到的延迟事件整理成可读报告。本文从阈值设置、事件记录、报告解读和复核动作入手,区分服务端阻塞、慢命令与网络往返。369 收藏 -
数据库 · MySQL | 1星期前 | MySQL · 执行计划 · InnoDB · 索引优化 · 查询性能 · explain 函数索引 MySQL 8.4 Functional Key Parts 表达式索引
MySQL 8.4 函数索引可以直接为表达式结果建立索引,但表达式写法、数据类型、写入成本和查询计划都要一起验收。本文用订单日期与 JSON 状态筛选两个场景,说明什么时候该建函数索引、什么时候改写查询更稳。429 收藏 -
Redis WATCH 只能在提交前发现被监视键发生变化,并不能保证事务一定成功。本文用并发写入示例拆开事务提交返回空数组、重试窗口和放弃重试的业务边界。165 收藏 -
数据库 · MySQL | 1星期前 | MySQL · 数据库 · 死锁 · InnoDB · 性能排查 · mysql innodb 死锁 事务 LATEST DETECTED DEADLOCK 锁顺序
MySQL 发生死锁后,不能只看报错回滚。本文从 SHOW ENGINE INNODB STATUS 的 LATEST DETECTED DEADLOCK 还原事务、锁资源和等待关系,再用相反锁顺序构造最小复现并给出上线前验收清单。480 收藏