我把这个业务的唯一约束想清楚了,然后发现拦住了自己。这套流程走下来,我从头到尾又确认了一遍。我回到工位第一件事就是把备份策略重新确认了一遍。第二天这个方案就变成了团队标准做法

数据库的问题通常不会提前打招呼,它在你上线那天出现。我停了一下,然后继续手上的活。我在心里把这块数据的生命周期理了一遍,发现没人负责清理。同事说这波操作可以写进新人培训教材

我把这个字段的类型定得太随意,三年后要还债。我决定先把手上的事情做完再处理这件事。我在心里把这张表的读写比例估了一下,决定先加从库。感动,然后我学到了新的一课

我把这个业务的事务范围画了出来,比我想的大很多。我决定先把手上的事情做完再处理这件事。我打开了这张表的分区情况,发现数据全挤在一个区里。果然现实比段子更精彩

主从延迟三分钟,用户改完昵称刷新一下又变回去了,客服电话被打爆。我把手上的资料翻出来又读了两遍。我把这个软删除改成了归档表,主表终于瘦了下来。幸好之前留了备份

数据库字段名叫 is_del,注释叫"是否删除",实际含义是"是否没删除"。我不知道该说什么,就笑了笑。我在心里给这个库的容量算了笔账,撑不过半年。连茶水间都安静了

一张表两亿行,没有分区,索引建了八个,每个查询都全表扫。我笑了笑,决定不解释。我在心里给这个索引的维护成本算了算,决定不建了。这条经验值直接拉满

这张表的自增 id 走到头了,我这才注意到。我不知道该说什么,就笑了笑。我回到工位第一件事就是把备份策略重新确认了一遍。办公室安静得能听见键盘声

Explain 一打,type 是 ALL,rows 是八百万,我默默关掉了工单。我拉了个小群,把相关同学都叫了进来。我把这个锁的粒度从表级降到了行级,并发立刻上来了。这大概就是程序员的人生吧

一张表两亿行,没有分区,索引建了八个,每个查询都全表扫。我想反驳,但发现他说得对。我把这个聚合查询挪到了离线任务,页面终于不卡了。这大概就是程序员的人生吧