专栏首页数据和云追寻完美:数据库SQL优化极致 之 关心隐藏的部分

追寻完美:数据库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)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SQL笔记

    表达式:表达式的定义非常简单 表达式可以返回一个值 表达式的类型非常广泛 它以包括各种 类型的数据如数字字符以逻辑型等其实在下列子句 如 SELECT 和 FR...

    企鹅号小编
  • MongoDB开发版本3.1.8发布

    MongoDB 3.1.8版本已发布。值得注意的是此次3.1.8作为开发版本,并不适用于生产环境中使用。接来下的3.2系列版本将供广大用户作为生产环境中使用,敬...

    CSDN技术头条
  • 用R & Python在云端运行可扩展数据科学

    前言 如今,数据科学变得越来越复杂。这种复杂性由下面三个因素导致: 增长的数据生产能力 —— 环视四周,数的出多少个能产生数据的设备呢?如果你用笔记本电脑来浏览...

    CSDN技术头条
  • ContainerX 推进Docker企业级应用

    在过去的一年里, 容器推动软件领域发生了翻天覆地的变化。随着Docker逐渐普及,作为运行和加速云应用的操作系统(OS)虚拟化技术,容器已经催生了一个包含开源容...

    CSDN技术头条
  • 微服务的鉴定与思考

    微服务有且仅有一种非常专项的功能,通过远程API来提供系统其余功能。举个例子:试想一下仓库的管理系统,这样的系统中微服务可能提供的一些功能有: 接收库存 计算新...

    CSDN技术头条
  • Apache Ignite——新一代数据库缓存系统

    【编者按】飞速增长的数据需要大量存储,对这些数据的管理也不是一件容易的事。但相比于存储和管理,如何处理数据才是开发人员真正的挑战。对于TB级别数据的存储和处理通...

    CSDN技术头条
  • 如果使用得当,MySQL也可以化身NoSQL

    随着互联网和移动互联网的发展,各个机构都需要支撑远超过以往的数据。而在这个需求的刺激下,IT领域出现了大量数据处理技术,其中之一就是NoSQL。灵活的数据类型,...

    CSDN技术头条
  • 30个4GB内存Rackspace云服务器45分钟内可运行1万个Docker容器

    摘要:本文主要讲述了在Rackspace上利用不到45分钟的时间在一个由30个4GB内存的云服务器组成的集群上部署10,000个Nginx 容器。具体步骤:在N...

    CSDN技术头条
  • CloudFlare:为什么能从富达、谷歌、微软、百度和高通筹到1.1亿美元?

    CloudFlare是一家从事网络性能和安全领域的初创公司。创始人兼首席执行官Matthew Prince在7岁的时候就能编写了第一个没有Bug的计算机程序,还...

    CSDN技术头条
  • InnoDB 列压缩,提升 DB 性能

    十年来腾讯游戏致力于带给玩家最好的快乐体验,腾讯游戏的后台数据库一直守护着亿万玩家的数据,提供稳定透明的服务。 腾讯后台数据库大部分使用的是MySQL数据库,现...

    腾讯大讲堂

扫码关注云+社区

领取腾讯云代金券