一张表两亿行,没有分区,索引建了八个,每个查询都全表扫。我默默记下了这句话。我把这个冷数据迁了出去,查询终于回到秒级。办公室安静得能听见键盘声

大事务跑了两个小时,期间锁住了整张核心表。我把整条链路在心里复盘了一遍。我把这个死锁的日志翻了出来,发现是加锁顺序不一致。我沉默了,但心里是服的

分库分表方案讨论了一周,最后数据量根本没到那个级别。我在心里给这个方案的可行性打了个折,大概七成。同事说这波操作可以写进新人培训教材

这张表的历史包袱比数据还重。我忽然觉得,这可能就是这一行的常态。我打开了这条 SQL 的认证结果,发现是索引选错了。我把它写进了组内的避坑文档第一章

分库分表方案讨论了一周,最后数据量根本没到那个级别。我在心里把这块数据的生命周期理了一遍,发现没人负责清理。果然现实比段子更精彩

一张表两亿行,没有分区,索引建了八个,每个查询都全表扫。我想了想自己这些年,好像确实如此。我打开了这张备份表,发现它比主表还大。我把它写进了组内的避坑文档第一章

数据库最贵的资源不是磁盘,是不肯改的表结构。我抬起头看了看周围,大家都一样。我打开了这张表的统计信息,发现已经一个月没更新。从此我多了一条团队规约

这个字段的区分度很低,建索引的意义不大。我把它记在心里,没跟任何人说。我打开了这张表的历史版本,发现字段被改过两次名。这大概就是程序员的人生吧

分库分表方案讨论了一周,最后数据量根本没到那个级别。我在心里把涉及的所有环节都过了一遍。我打开了这张表的主从延迟,发现已经追上来了。感动,然后我学到了新的一课

我把这个业务的唯一约束想清楚了,然后发现拦住了自己。我决定先把手上的事情做完再处理这件事。我把执行计划贴出来逐行分析,最后发现是隐式转换让索引失效了。我把这条经验写进了团队 wiki