数据库字段名叫 is_del,注释叫"是否删除",实际含义是"是否没删除"。我不知道该说什么,就笑了笑。我打开了这张表的分区情况,发现数据全挤在一个区里。连茶水间都安静了

数据库的问题通常不会提前打招呼,它在你上线那天出现。我盯着屏幕,觉得这才是我的一天。我默默加上了覆盖索引,查询耗时从数秒掉到毫秒。那一刻我觉得自己还是很专业的

一条 SQL 卡了整张表,最后发现是隐式类型转换没走索引。我先给自己泡了杯茶,做好了打持久战的准备。我把这个批量插入改成了多值插入,写入速度快了三倍。真香定律准时生效

我把这个业务的唯一约束想清楚了,然后发现拦住了自己。我先给自己泡了杯茶,做好了打持久战的准备。我看了下数据分布,发现这个字段的区分度只有百分之零点一。第二天这个方案就变成了团队标准做法

我把这条数据链路理了一遍,发现有个环节没人负责。我默默打开了编辑器,准备一步步验证。我把这个分库分表的键选成了用户 id,路由终于均匀了。果然现实比段子更精彩

数据库最贵的资源不是磁盘,是不肯改的表结构。我不知道该说什么,就笑了笑。我把大事务拆成了小批次提交,锁等待立刻消失了。这条经验值直接拉满

这条链路的瓶颈最后总是落在数据库上。我笑了笑,决定不解释。我把这个字段加了前缀索引,存储空间省了一大截。幸好之前留了备份

这个字段的区分度很低,建索引的意义不大。我叹了口气,然后打开了编辑器。我把这个软删除改成了归档表,主表终于瘦了下来

我把这个查询拆成了两步,反而比原来更快。我决定先把手上的事情做完再处理这件事。我打开了这张表的碎片率,决定重建一次。办公室安静得能听见键盘声

这张表的历史包袱比数据还重。我打开了这张表的统计信息,发现已经一个月没更新。世界瞬间清净了