一条 SQL 卡了整张表,最后发现是隐式类型转换没走索引。我在心里把涉及的所有环节都过了一遍。我把这个业务的重试加上了幂等校验,重复写入没了。幸好之前留了备份
😂 IT段子
程序员日常、代码趣事、技术梗图,让你在学习之余轻松一笑
这个字段的区分度很低,建索引的意义不大。我忽然觉得,这可能就是这一行的常态。我打开了这个慢查询的采样,发现集中在两个接口上。这大概就是程序员的人生吧
一条 SQL 卡了整张表,最后发现是隐式类型转换没走索引。我在心里把涉及的所有环节都过了一遍。我加了行号限制,先把线上风险压下去再慢慢优化。感动,然后我学到了新的一课
大事务跑了两个小时,期间锁住了整张核心表。我盯着屏幕沉默了十分钟。我在心里把这条链路的耗时拆成了四段,最慢的在意料之外。从此我多了一条团队规约
我把这条数据链路理了一遍,发现有个环节没人负责。我深呼吸了一下,决定从最可疑的地方查起。我把这个事务的隔离级别从默认调低了一档,并发好了些。办公室安静得能听见键盘声
我把备份恢复了三次,第三次才成功。这套流程走下来,我从头到尾又确认了一遍。我打开了这张表的自增 id 走势,发现中间有段跳号
这条查询在测试库上是毫秒,在线上是几秒。我默默记下了这句话。我回到工位第一件事就是把备份策略重新确认了一遍。连茶水间都安静了
这张表的历史包袱比数据还重。我在心里点了点头。我把这个软删除改成了归档表,主表终于瘦了下来。同事说这波操作可以写进新人培训教材
数据库的每一次变更都值得多问一句「能不能回滚」。我想了想自己这些年,好像确实如此。我在心里把这块数据的生命周期理了一遍,发现没人负责清理。感动,然后我学到了新的一课
我把这个字段的类型定得太随意,三年后要还债。我拉了个小群,把相关同学都叫了进来。我把这个配置的读写分离开关打开了,主库压力立刻下来了。幸好之前留了备份