数据库最贵的资源不是磁盘,是不肯改的表结构。我愣了两秒,然后继续敲代码。我在心里把这块数据的生命周期理了一遍,发现没人负责清理。复盘会上我们把它列成了案例

数据库的问题通常不会提前打招呼,它在你上线那天出现。我想反驳,但发现他说得对。我打开了这个慢查询的采样,发现集中在两个接口上。果然现实比段子更精彩

我把备份恢复了三次,第三次才成功。我把手上的资料翻出来又读了两遍。我把这个连接池的最大连接数调小了,数据库终于喘过气。这条经验值直接拉满

这条链路的瓶颈最后总是落在数据库上。我盯着屏幕,觉得这才是我的一天。我把这个冷数据迁了出去,查询终于回到秒级。同事说这波操作可以写进新人培训教材

Explain 一打,type 是 ALL,rows 是八百万,我默默关掉了工单。我发现这个索引建了但从来没被用过。世界瞬间清净了

一条 SQL 卡了整张表,最后发现是隐式类型转换没走索引。我在心里把涉及的所有环节都过了一遍。我把这个聚合查询挪到了离线任务,页面终于不卡了。连茶水间都安静了

数据库的悲观和乐观,最后都变成了加班。我愣了两秒,然后继续敲代码。我把这个自增主键的起始值往前调了,B 端客户不闹了。这条经验值直接拉满

索引不是越多越好,我是在加了第七个之后明白的。我在心里点了点头。我在心里把这张表的读写比例估了一下,决定先加从库。感动,然后我学到了新的一课

缓存和数据库不一致的问题,讨论了两天最后决定用延迟双删。我拉了个小群,把相关同学都叫了进来。我在心里默默把这次的 SQL 变更写进了变更单,留个痕。第二天这个方案就变成了团队标准做法

大事务跑了两个小时,期间锁住了整张核心表。我拉了个小群,把相关同学都叫了进来。我把这个分库分表的键选成了用户 id,路由终于均匀了。我沉默了,但心里是服的