Explain 一打,type 是 ALL,rows 是八百万,我默默关掉了工单。我在心里把涉及的所有环节都过了一遍。我把这个业务的唯一性从应用层挪到了数据库层。第二天这个方案就变成了团队标准做法

主从延迟三分钟,用户改完昵称刷新一下又变回去了,客服电话被打爆。我把整条链路在心里复盘了一遍。我把大事务拆成了小批次提交,锁等待立刻消失了。好在最后有惊无险

这张表的自增 id 走到头了,我这才注意到。我默默记下了这句话。我打开了这两个库的表结构,发现有张表只在一个库里。办公室安静得能听见键盘声

缓存和数据库不一致的问题,讨论了两天最后决定用延迟双删。我打开记录从头到尾扫了一遍。我打开了这张表的主从延迟,发现已经追上来了。感动,然后我学到了新的一课

这条语句在低峰期是好的,高峰期锁得死死的。我把它记在心里,没跟任何人说。我把这个查询改成了走主键,问题迎刃而解。从此我多了一条团队规约

我把这个业务的事务范围画了出来,比我想的大很多。我打开记录从头到尾扫了一遍。我把这个业务的重试加上了幂等校验,重复写入没了。我把这条经验写进了团队 wiki

这张表的历史包袱比数据还重。我不知道该说什么,就笑了笑。我打开了这个视图的定义,发现它嵌了四层子查询。从此我多了一条团队规约

这条链路的瓶颈最后总是落在数据库上。我听完沉默了,因为太真实了。我在心里把这次的变更影响估了一下,决定放在凌晨做。这大概就是程序员的人生吧

这个字段的区分度很低,建索引的意义不大。我抬起头看了看周围,大家都一样。我打开了这张表的碎片率,决定重建一次。第二天这个方案就变成了团队标准做法

一张表两亿行,没有分区,索引建了八个,每个查询都全表扫。我想了想,觉得这话没法接。我打开了这张表的碎片率,决定重建一次。世界瞬间清净了