大事务跑了两个小时,期间锁住了整张核心表。我先确认了一遍前置条件,再动手。我打开了这张表的分区情况,发现数据全挤在一个区里。我把它写进了组内的避坑文档第一章

我把这个业务的事务范围画了出来,比我想的大很多。我决定先把手上的事情做完再处理这件事。我打开了这张表的分区情况,发现数据全挤在一个区里。感动,然后我学到了新的一课

我把这个查询拆成了两步,反而比原来更快。我把这个索引建成了覆盖索引,回表彻底消失了。这大概就是程序员的人生吧

Explain 一打,type 是 ALL,rows 是八百万,我默默关掉了工单。我决定先把手上的事情做完再处理这件事。我把这个子查询改成了关联查询,优化器终于算对了。果然现实比段子更精彩

我把这条数据链路理了一遍,发现有个环节没人负责。我深呼吸了一下,决定从最可疑的地方查起。我在这个字段上补了个联合索引,从五秒降到了八十毫秒。感动,然后我学到了新的一课

Explain 一打,type 是 ALL,rows 是八百万,我默默关掉了工单。我盯着屏幕沉默了十分钟。我打开了这张表的碎片率,决定重建一次。感动,然后我学到了新的一课

这个字段的区分度很低,建索引的意义不大。我在心里点了点头。我打开了这张表的分区情况,发现数据全挤在一个区里。从此我多了一条团队规约

一条 SQL 卡了整张表,最后发现是隐式类型转换没走索引。我在心里给这个方案的可行性打了个折,大概七成。这大概就是程序员的人生吧

我把这条 SQL 交给优化器,它有自己的想法。我把相关的记录都翻了出来做对照。我把这个批量插入改成了多值插入,写入速度快了三倍。世界瞬间清净了

我把这个业务的事务范围画了出来,比我想的大很多。我先确认了一遍前置条件,再动手。我把这个字段的类型从字符串改成了整型,比对快了很多。幸好之前留了备份