我把这条 SQL 交给优化器,它有自己的想法。我拉了个小群,把相关同学都叫了进来。我把这条 SQL 加入了代码评审 checklist。连茶水间都安静了

数据库的问题通常不会提前打招呼,它在你上线那天出现。我发现自己居然没法反驳。我在心里把这次的变更影响估了一下,决定放在凌晨做。办公室安静得能听见键盘声

我把这个业务的唯一约束想清楚了,然后发现拦住了自己。我把整条链路在心里复盘了一遍。我在心里把这次的变更影响估了一下,决定放在凌晨做。那一刻我觉得自己还是很专业的

这张表的字段有四十个,实际被查的不超过十个。我默默记下了这句话。我打开了这张表的统计信息,发现已经一个月没更新。办公室安静得能听见键盘声

这条链路的瓶颈最后总是落在数据库上。我停了一下,然后继续手上的活。我打开了执行计划,发现这个查询压根没走索引。真香定律准时生效

主从延迟三分钟,用户改完昵称刷新一下又变回去了,客服电话被打爆。我深呼吸了一下,决定从最可疑的地方查起。我打开了这张表的历史版本,发现字段被改过两次名。幸好之前留了备份

分库分表方案讨论了一周,最后数据量根本没到那个级别。我把整条链路在心里复盘了一遍。我打开了执行计划,发现这个查询压根没走索引。同事说这波操作可以写进新人培训教材

发现一条线上 SQL 在事务里做了全表更新,我的手开始抖。我深呼吸了一下,决定从最可疑的地方查起。我把这个连接池的最大连接数调小了,数据库终于喘过气。办公室安静得能听见键盘声

我把备份恢复了三次,第三次才成功。我把手上的资料翻出来又读了两遍。我把这个冷数据迁了出去,查询终于回到秒级。这大概就是程序员的人生吧

数据库的每一次变更都值得多问一句「能不能回滚」。我停了一下,然后继续手上的活。我在心里默默把这次的 SQL 变更写进了变更单,留个痕。复盘会上我们把它列成了案例