ITPub博客

首页 > 数据库 > 数据库开发技术 > SQL优化思想①--不优化或许是最好的优化!

SQL优化思想①--不优化或许是最好的优化!

原创 数据库开发技术 作者:梁敬彬 时间:2024-10-16 08:19:16 0 删除 编辑

引言

熟悉我的朋友知道我擅长SQL优化,2017年出版过近80万字的技术书籍——《收获,不止SQL优化》,十余次印刷,反响热烈,在此,感谢支持我的读者。接下来,我将站在 SQL优化思想的角度,给大家做一个系列分享。

首先就是要有 批判性思维 ,我将告诉大家: 不优化或许是最好的优化! 故事从L老师的一次优化经历说起,希望给大家带来新的启发。

0

哈哈,其实我几乎什么都没做

Q:L老师,自从您为XXX平台做了SQL优化后,运行非常顺畅,您是做了大量改写吗?
L:我并没做任何SQL改写。
M:没有改写?那是通过索引优化吗?
L:我也没有新增任何索引。
W:老师,难道您调整了表结构,比如建分区、分片键、或者调整字段类型?
L:还是没有,所有表结构我都未做任何改动。
X:那一定是调整了某些神奇的参数吧?
L: 哈哈,其实我几乎什么都没做。

众人面面相觑。
L:各位,我知道你们很惊讶,其实,优化SQL和很多其他事情是相通的,比如 企业会定期评估员工绩效,对表现不佳的员工进行有针对性的指导,帮他们 优化自身能力,以更好地胜任工作。这和SQL优化就有些类似。

Q: 一个针对SQL, 一个针对员工,都是优化。有意思,L老师,您给我们展开说说吧。

1

莫急,探究SQL存在的必要性

L: 嗯。 小A是一个绩效不佳的员工,原因是一直没法拓展新客户。 老板 老K却觉得他能力不足,不断督促他学习提升。 可是,在与小A接触后,我发现他已经非常努力,把 大部分业余时间都投入到提升业务技能上,而且他的能力并不差。那么,为什么他无法胜任工作呢?
W:会不会是工作本身太难,难以完成?
L:不是工作难,而是 小A所做的方向已经被市场淘汰了。我当即对老K说,这事换谁做都一样,即便您老K来做,也不会好。其实该提升的不是小A,而是老K您啊。
Q:哦,原来如此。
L:回到XXX平台的SQL优化案例,该平台的A模块有一类SQL大家束手无策,改写多次仍无法优化。我通过分析这些SQL的日期条件逻辑,判断出它们大概率可以直接下线。 经确认,这些SQL确实多余,于是果断删除,问题解决!

W:厉害! 从SQL的必要性角度思考问题 ,确实是一种批判性思维,受益匪浅。
L:是的。回到小A的故事,之后老K舍弃了这个业务方向后, 小A转做其他工作,其表现大幅提升,成为公司的优秀员工。
X:哈哈,扬眉吐气!

2

莫慌,观察SQL运行的全局性

L:小B也是低绩效,其原因是工作效率太低。但我见到小B时,觉得他思路清晰,手脚利索,不像不思进取的员工。然而,深入了解后,我才明白原因。

Q:为什么?

L:小B所在的部门办公地点偏僻,办公设备简陋,这导致每个人的工作效率都因此降低,只是小B太年轻没经验,显得更糟一些罢了。这次的问题依然在老K身上。

W:原来小B是被冤枉的。

L:回到XXX平台SQL优化案例,该平台的B模块有一类SQL,无论怎么优化都快不了。就在大家一筹莫展之时,我发现 这些SQL所在的主机资源极其繁忙,系统的压力巨大,任何SQL在这种环境下都难以提升,进一步调查后,了解到主机上有很多进程可以迁移到其他主机,于是火速迁移,结果这些SQL运行速度飞升。

Q:我明白了, 解决问题还是要先看全局啊 。

L:是的。回到小B的故事,之后 老K改善了小B部门的环境 , 小B工作效率迅速提升,很快便成为了公司的核心骨干。

X:哈哈,沉冤昭雪!

3

莫忘,分析SQL需求的合理性

L:最后说说小C,他低绩效的原因是工作时常出错。经过交流,我发现小C根本不是一个粗心大意的人。后来才明白了真相。
Q:真相是什么?
L:小C每天要与近百个客户对接,任务繁重,难免会忙中出错。
W:可怜的小C。
L:回到XXX平台的SQL优化案例,该平台的C模块有一批SQL难以优化,且每天执行次数达千万次,消耗大量主机资源。调查后发现这是 每分钟一次的采集工作。经过深入分析业务,确定可将其调整为 每天采集一次,于是SQL执行次数立降千倍,系统负载大幅减少,性能显著提升。


Q:出乎意料啊!居然想到 质疑 需求背后的 合理性,看来 没有什么是不可以改变的。
L:是的。回到小C故事,之后老K通过协商 ,让小C从对接每个客户变成只对接客户的总接口人。很快, 小C每天只需对接十多人,时间得到了极大节省,工作质量也大幅提升了, 不久就被提拔为部门经理。
X:哈哈,逆袭人生!

结语

“ 不优化或许是最好的优化!”—— 强调以 批判性的思维 从源头解决问题。看似什么都没做,实则 通过 必要性、全局性、合理性的分析,早已将SQL优化的效果拉满。
万事相通, SQL优化与员工优化在本质上并无差异。正如那些SQL的问题不在SQL本身一样, 小A、小B、小C他们的低绩效原因,也不在于他们本身。

本文提到的 平台优化与员工优化皆为真人真事 ,希望能 给大家带来启发。 下一集开始,我将带领大家 基于SQL优化的思想 ,一步一步推导出完善的 SQL优化方法论 ,敬请期待!

未完待续...


公众号:收获不止数据库

微信:ljbyxl1213

系列回顾


原文作者:收获不止数据库;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论
历任中电福富研究院副理事长、中盾安信研究院副院长、宁德时代技术顾问等职务,受聘电信集团专家和国家十四五课题负责人,著有《收获,不止Oracle》《收获,不止SQL优化》等多本畅销数据库技术书籍。

注册时间:2024-02-06

  • 博文量
    162
  • 访问量
    198018