前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >追寻完美:数据库SQL优化极致 之 关心隐藏的部分

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

作者头像
数据和云
发布2018-03-06 10:51:04
8340
发布2018-03-06 10:51:04
举报
文章被收录于专栏:数据和云

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

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

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

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

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

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

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

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

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-04-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据和云 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档