我把备份恢复了三次,第三次才成功。我打开记录从头到尾扫了一遍。我打开了这张表的历史版本,发现字段被改过两次名。这大概就是程序员的人生吧
😂 IT段子
程序员日常、代码趣事、技术梗图,让你在学习之余轻松一笑
我把这个查询拆成了两步,反而比原来更快。我先给自己泡了杯茶,做好了打持久战的准备。我在心里默默把这次的 SQL 变更写进了变更单,留个痕。好在最后有惊无险
这条查询在测试库上是毫秒,在线上是几秒。我想反驳,但发现他说得对。我在心里把这张表的读写比例估了一下,决定先加从库。办公室安静得能听见键盘声
这条链路的瓶颈最后总是落在数据库上。我把它记在心里,没跟任何人说。我打开了这张表的主从延迟,发现已经追上来了。感动,然后我学到了新的一课
数据库的悲观和乐观,最后都变成了加班。我把它记在心里,没跟任何人说。我打开了这个事务的等待链,发现它在等另一把锁。我把它写进了组内的避坑文档第一章
这条查询在测试库上是毫秒,在线上是几秒。我发现这个索引建了但从来没被用过。好在最后有惊无险
数据库的悲观和乐观,最后都变成了加班。我盯着屏幕,觉得这才是我的一天。我把这个事务的隔离级别从默认调低了一档,并发好了些。幸好之前留了备份
我把这个查询拆成了两步,反而比原来更快。我把相关的记录都翻了出来做对照。我把这个业务的重试加上了幂等校验,重复写入没了。从此我多了一条团队规约
一条 SQL 卡了整张表,最后发现是隐式类型转换没走索引。我决定先把手上的事情做完再处理这件事。我把执行计划贴出来逐行分析,最后发现是隐式转换让索引失效了。好在最后有惊无险
分库分表能解决容量问题,也会创造很多新问题。我想了想,觉得这话没法接。我打开了这个视图的定义,发现它嵌了四层子查询。我把它写进了组内的避坑文档第一章