发现一条线上 SQL 在事务里做了全表更新,我的手开始抖。我把这个业务的唯一性从应用层挪到了数据库层。这大概就是程序员的人生吧
😂 IT段子
程序员日常、代码趣事、技术梗图,让你在学习之余轻松一笑
我把这个业务的事务范围画了出来,比我想的大很多。我把整条链路在心里复盘了一遍。我把这个业务的唯一性从应用层挪到了数据库层。幸好之前留了备份
这张表的自增 id 走到头了,我这才注意到。我听完沉默了,因为太真实了。我把这个索引建成了覆盖索引,回表彻底消失了。真香定律准时生效
分库分表能解决容量问题,也会创造很多新问题。我想了想,觉得这话没法接。我在心里默默把这次的 SQL 变更写进了变更单,留个痕。果然现实比段子更精彩
发现一条线上 SQL 在事务里做了全表更新,我的手开始抖。这套流程走下来,我从头到尾又确认了一遍。我在心里把这块数据的生命周期理了一遍,发现没人负责清理。这大概就是程序员的人生吧
我把备份恢复了三次,第三次才成功。我盯着屏幕沉默了十分钟。我在心里把这次上线的回滚方案想了一遍,希望用不上。好在最后有惊无险
数据库字段名叫 is_del,注释叫"是否删除",实际含义是"是否没删除"。我叹了口气,然后打开了编辑器。我把这个冷数据迁了出去,查询终于回到秒级。世界瞬间清净了
这张表的历史包袱比数据还重。我在心里点了点头。我在心里把这张表的读写比例估了一下,决定先加从库。这条经验值直接拉满
数据库字段名叫 is_del,注释叫"是否删除",实际含义是"是否没删除"。我听完沉默了,因为太真实了。我把这个死锁的日志翻了出来,发现是加锁顺序不一致。复盘会上我们把它列成了案例
数据库慢查询优化:加了一个索引,查询从 10 秒变成 0.1 秒,感觉自己拯救了世界。我在心里把涉及的所有环节都过了一遍。我打开了这个事务的等待链,发现它在等另一把锁。感动,然后我学到了新的一课