暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

Oracle SQL优化与调优技术详解(开篇辞)

原创 黄玮 2020-05-28
2069

多年前我编著了《Oracle高性能SQL引擎剖析:SQL优化与调优机制详解》这本书,今天在墨天轮开设一个专栏,准备把书中的内容整理成文章,陆续发出来分享给大家。这些内容会涉及Oracle SQL的优化与调优机制、核心技术,以及性能优化的思想方法,是我本人十余年工作经验与研究心得的结晶,包含大量技巧与实践,希望能够帮助到更多朋友。

首先做个自我介绍。我是黄玮(Fuyuncat),资深Oracle DBA,从事Oracle数据库管理、维护与开发工作十余年,有丰富的大型数据库设计、开发与维护方面的经验,涉及航空、水利、军工、电信等多个行业。曾供职于某世界著名物流公司,负责公司的电子物流系统的数据库开发和维护工作。2005年创建了个人网站,致力于数据库底层技术的研究,整理和发布了大量关于数据库系统底层机制、存储结构、性能调优以及基础算法方面的文章,获得广大同行的高度评价。开发了多个与数据恢复、性能监控、内核跟踪相关的免费实用工具,深受欢迎,为Oracle社区做出了很大贡献。

开篇辞

做为一个数据库管理系统来说,Oracle 不仅具备为用户存储和管理海量数据的能力,还需要能够解析用户提交结构化查询语言(Structured Query Language,SQL)的请求,高效和快速的响应请求。为了保证语句的查询效率,Oracle 开发了许多技术从各个方面提供支持,例如,物理设计、内存管理和 SQL 语句本身的自动优化与调优。

本专栏将着重介绍 Oracle 对 SQL 语句的优化有调优技术。SQL 优化,是指在语句运行之前,由 SQL 引擎对语句进行解析,采用各项技术对查询进行优化,找到其最佳的执行路径,即执行计划;SQL 调优,则是对已经存在执行计划的语句进行进一步调整,使其运行性能更加接近性能指标的要求,达到性能改进的目的。

SQL 优化与 SQL 调优是在改善 SQL 语句性能的过程中,两个不同阶段实施的技术与方法。SQL 优化,基本上是由优化器根据当前环境和数据实施的内部优化措施;SQL 调优,则是通过对语句、物理对象以及优化环境的干预,使得优化器能够选择到最优的 SQL 执行方式。因此,这两个方面的技术内容是相辅相成的。简单的说,我们在调整 SQL 语句性能时,需要灵活地使用 SQL 调优技术,使得 SQL 语句在优化阶段能够或者真正最佳性能的执行计划。下图描述了 SQL 优化与 SQL 调优在改进性能过程中所处的位置以及相互作用的方式。希望读者可以先通过这张图体会到这两方面技术之间的关系,在后续的学习过程中能清楚地知道当前的内容在提高性能的过程中所处的位置与作用。

截屏20200528 下午3.19.17.png

SQL 性能改进过程

无论是 SQL 优化还是调用,它们的核心内容都是执行计划(Execution Plan)。许多相关技术,例如查询转换、SQL 调用配置(SQL Profile)都是围绕执行计划这一要素展开的。后续的文章将从执行计划开始,逐步展开对 Oracle 的 SQL 优化与调优的相关技术的分析与描述。

在我的文章里将有不少演示代码用于解释相关知识点。读者朋友们请执行脚本 00_01_Prepare.sql 准备演示环境。后续文章所介绍的内容将基于 10g 和 11g 的版本特性,其中有部分脚本只能用于相应版本,请注意提示。

*欢迎大家持续关注本专栏

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论