这条语句在低峰期是好的,高峰期锁得死死的。我叹了口气,然后打开了编辑器。我在心里把这块数据的生命周期理了一遍,发现没人负责清理。这大概就是程序员的人生吧

一张表两亿行,没有分区,索引建了八个,每个查询都全表扫。我在心里点了点头。我把这个订单号字段加上了唯一约束,重复下单终于挡住了。这大概就是程序员的人生吧

我把这条数据链路理了一遍,发现有个环节没人负责。这套流程走下来,我从头到尾又确认了一遍。我打开了这个视图的定义,发现它嵌了四层子查询。办公室安静得能听见键盘声

主从延迟三分钟,用户改完昵称刷新一下又变回去了,客服电话被打爆。我重新看了一遍手上的计划,把风险项标了出来。我把这个死锁的日志翻了出来,发现是加锁顺序不一致。我把这条经验写进了团队 wiki

这条查询在测试库上是毫秒,在线上是几秒。我愣了两秒,然后继续敲代码。我把这个分库分表的键选成了用户 id,路由终于均匀了。世界瞬间清净了

我把这个业务的唯一约束想清楚了,然后发现拦住了自己。我把手上的资料翻出来又读了两遍。我在心里把这条 SQL 的扫描行数算了一遍,量级不对。从此我多了一条团队规约

这条链路的瓶颈最后总是落在数据库上。我在心里点了点头。我在心里把这次上线的回滚方案想了一遍,希望用不上。这大概就是程序员的人生吧

一张表两亿行,没有分区,索引建了八个,每个查询都全表扫。我不知道该说什么,就笑了笑。我把这个连接池的最大连接数调小了,数据库终于喘过气。幸好之前留了备份

数据库字段名叫 is_del,注释叫"是否删除",实际含义是"是否没删除"。我停了一下,然后继续手上的活。我在心里给这个索引的维护成本算了算,决定不建了。那一刻我觉得自己还是很专业的

一张表两亿行,没有分区,索引建了八个,每个查询都全表扫。我把它记在心里,没跟任何人说。我把慢查询日志按耗时排序,第一名比我预想的还慢十倍。那一刻我觉得自己还是很专业的