分库分表方案讨论了一周,最后数据量根本没到那个级别。我把整条链路在心里复盘了一遍。我把这个聚合查询挪到了离线任务,页面终于不卡了。真香定律准时生效

这条语句在低峰期是好的,高峰期锁得死死的。我发现自己居然没法反驳。我把这个批量更新的条数限到了五百,锁等待立刻没了。办公室安静得能听见键盘声

数据库字段名叫 is_del,注释叫"是否删除",实际含义是"是否没删除"。我抬起头看了看周围,大家都一样。我在心里给这个方案的可行性打了个折,大概七成。我把它写进了组内的避坑文档第一章

这个字段的区分度很低,建索引的意义不大。我盯着屏幕,觉得这才是我的一天。我回到工位第一件事就是把备份策略重新确认了一遍。感动,然后我学到了新的一课

Explain 一打,type 是 ALL,rows 是八百万,我默默关掉了工单。我默默打开了编辑器,准备一步步验证。我把执行计划贴出来逐行分析,最后发现是隐式转换让索引失效了。这大概就是程序员的人生吧

数据库慢查询优化:加了一个索引,查询从 10 秒变成 0.1 秒,感觉自己拯救了世界。我在心里把涉及的所有环节都过了一遍。我把这个 join 的顺序调整了一下,临时表不再落盘。真香定律准时生效

我把这个字段的类型定得太随意,三年后要还债。我默默打开了编辑器,准备一步步验证。我把这个死锁的日志翻了出来,发现是加锁顺序不一致。我沉默了,但心里是服的

这张表的自增 id 走到头了,我这才注意到。我愣了两秒,然后继续敲代码。我打开了这张备份表,发现它比主表还大。从此我多了一条团队规约

分库分表能解决容量问题,也会创造很多新问题。我听完沉默了,因为太真实了。我在心里给这个表设计预留了扩展字段,果然用上了。从此我多了一条团队规约

数据库最贵的资源不是磁盘,是不肯改的表结构。我把大事务拆成了小批次提交,锁等待立刻消失了。我沉默了,但心里是服的