一张表两亿行,没有分区,索引建了八个,每个查询都全表扫。我想了想自己这些年,好像确实如此。我把这个查询改成了走主键,问题迎刃而解。从此我多了一条团队规约
😂 IT段子
程序员日常、代码趣事、技术梗图,让你在学习之余轻松一笑
发现一条线上 SQL 在事务里做了全表更新,我的手开始抖。我拉了个小群,把相关同学都叫了进来。我在心里把这条 SQL 的扫描行数算了一遍,量级不对。我把它写进了组内的避坑文档第一章
一张表两亿行,没有分区,索引建了八个,每个查询都全表扫。我抬起头看了看周围,大家都一样。我打开了这张表的主从延迟,发现已经追上来了。办公室安静得能听见键盘声
这张表的历史包袱比数据还重。我默默记下了这句话。我把执行计划贴出来逐行分析,最后发现是隐式转换让索引失效了。同事说这波操作可以写进新人培训教材
我把这个查询拆成了两步,反而比原来更快。我决定先把手上的事情做完再处理这件事。我在心里把这次上线的回滚方案想了一遍,希望用不上。这条经验值直接拉满
发现一条线上 SQL 在事务里做了全表更新,我的手开始抖。我把相关的记录都翻了出来做对照。我在心里给这个库的容量算了笔账,撑不过半年。感动,然后我学到了新的一课
这条语句在低峰期是好的,高峰期锁得死死的。我把它记在心里,没跟任何人说。我在心里默默把这次的 SQL 变更写进了变更单,留个痕。这条经验值直接拉满
缓存和数据库不一致的问题,讨论了两天最后决定用延迟双删。我重新看了一遍手上的计划,把风险项标了出来。我在心里把这次上线的回滚方案想了一遍,希望用不上。好在最后有惊无险
这张表的历史包袱比数据还重。我想反驳,但发现他说得对。我把这个模糊查询的前缀通配符去掉了,索引回来了。同事说这波操作可以写进新人培训教材
分库分表方案讨论了一周,最后数据量根本没到那个级别。我默默打开了编辑器,准备一步步验证。我在心里给这个索引的维护成本算了算,决定不建了。那一刻我觉得自己还是很专业的