主从延迟三分钟,用户改完昵称刷新一下又变回去了,客服电话被打爆。我默默打开了编辑器,准备一步步验证。我把大事务拆成了小批次提交,锁等待立刻消失了。世界瞬间清净了

我把这个字段的类型定得太随意,三年后要还债。我打开了这张表的统计信息,发现已经一个月没更新。办公室安静得能听见键盘声

这张表的自增 id 走到头了,我这才注意到。我把这个配置的读写分离开关打开了,主库压力立刻下来了。办公室安静得能听见键盘声

一条 SQL 卡了整张表,最后发现是隐式类型转换没走索引。我把相关的记录都翻了出来做对照。我把这个聚合查询挪到了离线任务,页面终于不卡了。连茶水间都安静了

数据库字段名叫 is_del,注释叫"是否删除",实际含义是"是否没删除"。我打开了这张表的历史版本,发现字段被改过两次名。复盘会上我们把它列成了案例

索引不是越多越好,我是在加了第七个之后明白的。我抬起头看了看周围,大家都一样。我把这个子查询改成了关联查询,优化器终于算对了。第二天这个方案就变成了团队标准做法

我把这条数据链路理了一遍,发现有个环节没人负责。我把手上的资料翻出来又读了两遍。我在心里把这张表的读写比例估了一下,决定先加从库。复盘会上我们把它列成了案例

缓存和数据库不一致的问题,讨论了两天最后决定用延迟双删。我先给自己泡了杯茶,做好了打持久战的准备。我发现这个索引建了但从来没被用过。第二天这个方案就变成了团队标准做法

大事务跑了两个小时,期间锁住了整张核心表。我先确认了一遍前置条件,再动手。我在心里给这个索引的维护成本算了算,决定不建了。我沉默了,但心里是服的

数据库的问题通常不会提前打招呼,它在你上线那天出现。我把这个业务的重试加上了幂等校验,重复写入没了。那一刻我觉得自己还是很专业的