追寻完美:数据库SQL优化极致 之 关心隐藏的部分

张中靖 云和恩墨技术专家,软件研发总监

我们先来听一个【老木匠和小木匠的故事】

同样做柜子,老木匠做的是两面光,柜子内外摸起来一样光滑、不扎手;而小木匠做的,大多是外面光滑,里面不能细看。

乔布斯可以算是一位老木匠了,他一生中追求的完美主义,淋漓尽致地表现在了苹果的一系列产品中。《史蒂夫·乔布斯传》有这样的描述:

乔布斯从父亲身上学到,充满激情的工艺就是要确保即使是隐藏的部分也被做得很漂亮。这种理念最极端也是最有说服力的例子之一,就是乔布斯会仔细检查电路板,电路板上是芯片和其他部件,深藏于麦金塔的内部,没有哪个用户会看到它,但乔布斯还是会从美学角度对它进行评判。“哪个部分做得很漂亮,”他说,“但是,看看这些存储芯片。真难看。这些线靠的太近了。”

一名新手工程师打断他说这有什么关系,“只要机器能运行起来就行,没人会去看电路板的”。

乔布斯的反应和往常一样:“我想要它尽可能好看一点,就算他是在机箱里面的。优秀木匠不会用劣质模板去做柜子的背板,即使没人会看到。”几年之后,在麦金塔电脑上市后的一次访谈中,乔布斯再一次提到了当年父亲对他的教导:“如果你是个木匠,你要做一个漂亮的衣柜,你不会用胶合板做背板,虽然这一块是靠着墙的,没人会看见。你自己知道它就在那儿,所以你会用一块漂亮的木头去做背板。如果你晚上想睡得安稳的话,就要保证外观和质量都足够好。”

乔布斯的“关心隐藏部分”理念让他把细节做到了极致,这是苹果产品能够做到今天成就的一个重要因素。同样,这个道理也适用于我们做SQL优化的时候。一些技术人员谈论到用profile优化SQL,效果是如何如何的好。做Oracle优化时,不少人习惯用Hint、Outline、Profile等固定执行计划来优化SQL,效果几乎是立杆见影。殊不知这是将SQL性能与SQL文本建立了强关联,并没有根本解决问题。一旦SQL写法发生变化(或者未使用hint的SQL出现),优化手段失效的可能性很大,性能问题将再次出现。

这种优化方式的问题在于仅限于解决现场问题(类似于急诊),而停止去思考SQL选择较差执行计划的原因。Oracle一直不停的改进CBO算法,就是为了让SQL书写方式跟性能解耦,让开发人员尽可能只关注实现业务逻辑。当Oracle为SQL选择了性能较差的执行计划,在使用profile甚至hint固定临时解决问题后,DBA还要思考下为啥选择了差的执行计划?差的执行计划和较优的执行计划有哪些差别?这些差别是什么导致的?能否修复?只有理解了执行计划的产生原理才能从根本上解决问题,也就是老木匠和小木匠的差别。

本文引用内容来源:《史蒂夫·乔布斯传》第十二章:设计 。本文题图来自网络。

我们一直在关注SQL的性能,并为此在研发SQL性能诊断分析产品,如果你是一个完美主义者,并对此深藏爱好,请给我们发送简历。

原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2016-04-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏企鹅号快讯

新的加密货币挖矿病毒感染脸书Messenger

暴走时评:网络安全研究员发现新型恶意软件通过脸书Messenger在全球传播。Digmine伪装成视频文件链接发送给受害者,其实是可执行脚本。利用谷歌Chrom...

1729
来自专栏知晓程序

这些是 3 月里最「浪」的小程序

794
来自专栏程序员叨叨叨

【转】从零开始手敲次世代游戏引擎(序)

大家好。我“正式”从事软件工程师这个职业已经快15年了。至于编程的历史则更长,有20余年了。记忆当中第一次编程的机器里只有ROM BASIC,用“*”打了个金字...

824
来自专栏牛客网

Java实习总结网易百度小米美团阿里(均offer)

1173
来自专栏漏斗社区

专属| 分析神器曝严重漏洞

安全实验室报告称,7500台 MikroTik 路由器被植入挖矿代码并将用户流量转发给攻击者指定的 IP 地址。黑客工具 Chimay Red 涉及到 2 个 ...

1122
来自专栏漏斗社区

专属| 流行VPN存在安全漏洞

针对近日曝光的Adobe Flash 零日漏洞(CVE-2018-5002),已经出现了一款名叫 CHAINSHOT 的恶意软件攻击。其利用微软 Excel 文...

763
来自专栏跨界架构师

烦人的数据不一致问题到底怎么解决?——通过“共识”达成数据一致性

  本文是本系列的第二篇。是前一篇《不知道是不是最通俗易懂的《数据一致性》剖析了》的后续内容。

781
来自专栏程序员互动联盟

【专业技术】学习安卓的好帮手

编者按:学习安卓,当然需要一个硬件平台,如果你不怕把自己的手机搞坏、变砖,那么弄一套开源硬件平台就是必不可少的,回想起来,我弄过好几块android的开源开发板...

2899
来自专栏FreeBuf

Switch遭重了!Tegra内核漏洞无法修复,越狱指日可待

研究人员发布了一个Fusée Gelée漏洞的PoC代码,漏洞影响的是任天堂Switch主机里嵌入式处理器中涉及Nvidia Tegra的代码。

693
来自专栏视频咖

技术宅GG的朋友圈,点赞破100+

大家眼中的技术宅小哥哥,应该是带着黑款眼睛,整天只会和电脑谈恋爱。不,你错了,作为技术宅的我,我可是朋友圈里的红人,发圈的点赞人数和评论人数都是过百

1382

扫码关注云+社区