这条链路的瓶颈最后总是落在数据库上。我抬起头看了看周围,大家都一样。我回到工位第一件事就是把备份策略重新确认了一遍。我把这条经验写进了团队 wiki

数据库的悲观和乐观,最后都变成了加班。我不知道该说什么,就笑了笑。我回到工位第一件事就是把备份策略重新确认了一遍。世界瞬间清净了

这张表的字段有四十个,实际被查的不超过十个。我不知道该说什么,就笑了笑。我把这个冷数据迁了出去,查询终于回到秒级。我把这条经验写进了团队 wiki

我把这个业务的事务范围画了出来,比我想的大很多。我把相关的记录都翻了出来做对照。我打开了执行计划,发现这个查询压根没走索引。我把它写进了组内的避坑文档第一章

我把这条数据链路理了一遍,发现有个环节没人负责。我打开记录从头到尾扫了一遍。我把这个分库分表的键选成了用户 id,路由终于均匀了。世界瞬间清净了

这张表的自增 id 走到头了,我这才注意到。我把它记在心里,没跟任何人说。我打开了这个视图的定义,发现它嵌了四层子查询。连茶水间都安静了

一条 SQL 卡了整张表,最后发现是隐式类型转换没走索引。我把整条链路在心里复盘了一遍。我把这个事务的隔离级别从默认调低了一档,并发好了些。从此我多了一条团队规约

我把备份恢复了三次,第三次才成功。我深呼吸了一下,决定从最可疑的地方查起。我看了下数据分布,发现这个字段的区分度只有百分之零点一。从此我多了一条团队规约

我把这个业务的事务范围画了出来,比我想的大很多。我先给自己泡了杯茶,做好了打持久战的准备。我把这个业务的时间字段从字符串改成了时间戳,排序准了。办公室安静得能听见键盘声

我把这个字段的类型定得太随意,三年后要还债。我重新看了一遍手上的计划,把风险项标了出来。我默默加上了覆盖索引,查询耗时从数秒掉到毫秒。我沉默了,但心里是服的