一条 SQL 卡了整张表,最后发现是隐式类型转换没走索引。这套流程走下来,我从头到尾又确认了一遍。我在心里把这次的变更影响估了一下,决定放在凌晨做。连茶水间都安静了

我把这个字段的类型定得太随意,三年后要还债。我决定先把手上的事情做完再处理这件事。我打开了这个慢查询的采样,发现集中在两个接口上。那一刻我觉得自己还是很专业的

分库分表方案讨论了一周,最后数据量根本没到那个级别。我打开记录从头到尾扫了一遍。我把这个连接池的最大连接数调小了,数据库终于喘过气。幸好之前留了备份

我把这条 SQL 交给优化器,它有自己的想法。我把这个业务的唯一性从应用层挪到了数据库层。这大概就是程序员的人生吧

我把这个业务的唯一约束想清楚了,然后发现拦住了自己。我盯着屏幕沉默了十分钟。我在心里默默给这个字段加了 NOT NULL,但要先洗数据。复盘会上我们把它列成了案例

我把这条 SQL 交给优化器,它有自己的想法。我先给自己泡了杯茶,做好了打持久战的准备。我发现这个索引建了但从来没被用过

索引不是越多越好,我是在加了第七个之后明白的。我停了一下,然后继续手上的活。我把这个订单号字段加上了唯一约束,重复下单终于挡住了。世界瞬间清净了

数据库字段名叫 is_del,注释叫"是否删除",实际含义是"是否没删除"。我打开了这个慢查询的采样,发现集中在两个接口上。我把它写进了组内的避坑文档第一章

数据库的问题通常不会提前打招呼,它在你上线那天出现。我想了想自己这些年,好像确实如此。我发现这个索引建了但从来没被用过。那一刻我觉得自己还是很专业的

数据库的悲观和乐观,最后都变成了加班。我停了一下,然后继续手上的活。我在心里把这条 SQL 的扫描行数算了一遍,量级不对。办公室安静得能听见键盘声