这条语句在低峰期是好的,高峰期锁得死死的。我默默记下了这句话。我把这个字段加了前缀索引,存储空间省了一大截。感动,然后我学到了新的一课

一条 SQL 卡了整张表,最后发现是隐式类型转换没走索引。我先给自己泡了杯茶,做好了打持久战的准备。我默默加上了覆盖索引,查询耗时从数秒掉到毫秒。果然现实比段子更精彩

数据库字段名叫 is_del,注释叫"是否删除",实际含义是"是否没删除"。我发现自己居然没法反驳。我把这个业务的时间字段从字符串改成了时间戳,排序准了。好在最后有惊无险

缓存和数据库不一致的问题,讨论了两天最后决定用延迟双删。这套流程走下来,我从头到尾又确认了一遍。我把这个连接池的最大连接数调小了,数据库终于喘过气。果然现实比段子更精彩

这个字段的区分度很低,建索引的意义不大。我停了一下,然后继续手上的活。我打开了这张表的碎片率,决定重建一次。办公室安静得能听见键盘声

数据库字段名叫 is_del,注释叫"是否删除",实际含义是"是否没删除"。我在心里点了点头。我把这个字段加了前缀索引,存储空间省了一大截。连茶水间都安静了

我把这个查询拆成了两步,反而比原来更快。我打开记录从头到尾扫了一遍。我加了行号限制,先把线上风险压下去再慢慢优化。这大概就是程序员的人生吧

这条链路的瓶颈最后总是落在数据库上。我抬起头看了看周围,大家都一样。我把这个连接池的最大连接数调小了,数据库终于喘过气。同事说这波操作可以写进新人培训教材

发现一条线上 SQL 在事务里做了全表更新,我的手开始抖。我先给自己泡了杯茶,做好了打持久战的准备。我把这个锁的粒度从表级降到了行级,并发立刻上来了。好在最后有惊无险

数据库最贵的资源不是磁盘,是不肯改的表结构。我不知道该说什么,就笑了笑。我在心里把这条 SQL 的扫描行数算了一遍,量级不对。我把它写进了组内的避坑文档第一章