性能调优第二篇-执行计划

原创 2017年09月16日 11:22:00

前言


在我们拿到一个SQL 语句后,要尝试对他进行调优第一件事是格式化,那第二件事就是查看SQL 的执行计划。


什么是执行计划


SQL Server查询处理器由两个组件组成:查询优化器和查询执行引擎。查询优化器负责生成好的执行计划。查询执行引擎接受查询优化器生成的执行。查询执行涉及许多功能,包括从表和索引检索和更新数据,以及连接和聚合等操作。总之,SQL 语句只能告诉数据库我们想要什么数据。执行计划就是如何去取得这些数据的具体方法。


查看执行计划




图中的两个按钮分别用户查看估计的执行计划和实际的执行计划

估计的执行计划:就是在SQL 还没执行前优化器产生的执行计划

实际的执行计划:需要实际的去执行SQL 语句才能看到。

1.估计的执行计划和实际的执行计划可能会有差异

2.实际的执行计划可以看到实际的行数。如果实际的行数和估计的行数差异很大的时候。我们就需要注意。有可能产生的执行就会不是最优的。所以,如果在条件允许的情况下,尽量查看实际的执行计划


分类


图形化的执行计划

阅读顺序是的从右往左,从上到下。对于初学者,图形化的执行计划是最直观的。所以,后续的博客也主要以这种形式为主。图中每一个图形就是一个操作符。

比如:   就是表示对表#tt进行扫描。




这里一个需要重点关注,就是每个操作符的开销。开销占比越大,我们就需要特别关注他。另外需要注意的是:这里的百分百值加起来可能会超过100%。这算是一个BUG。

不过就算超过100%,这个开销也是很有参考意义的。相对值越大的开销也越大。


文本的执行计划


在执行SQL查询之前,运行   SET SHOWPLAN_ALL ON. 就会输出如下的文本形式的执行计划。阅读顺序是从内到外。具体舒心如下图所标示:




XML格式

使用下面的语句开启:

SET STATISTICS XML ON .阅读方式和文本形式的类型。从内向外。每一个<Relop> 就是一个操作符。上面有跟这个操作相关的信息。这种形式的执行计划我用得很少。感觉不如前面2种的直观。




总结


文章主要是讲什么是执行计划,和如何查看执行计划。下一篇文章会分享 常见的运算符。


版权声明:本文为博主原创文章,未经博主允许不得转载。

oracle笔记整理14——性能调优之oracle执行计划

1) 优化器(optimizer) a) RBO(rule-based optimizer)方式:基于规划的优化方式 所遵循的是oracle内部预定的一些规则. b) CBO(cost-base...
  • thinkpadshi
  • thinkpadshi
  • 2016年01月16日 22:59
  • 675

性能调优分析之:Oracle SQL执行计划报告生成器

Oracle SQL执行计划分析器功能的创建3步曲: 1 首先,编译XYG_ALD_SESS_PKG的Package头。 (XYG_ALD_SESS_PKG.sql) 2 接着要建立好下面的4个...
  • samt007
  • samt007
  • 2017年04月07日 13:55
  • 325

Oracle性能优化-读懂执行计划

即便是普通的程序员也必须要懂得SQL的执行原理,对于程序员来说DB不仅仅只是一个File Storage Device而是一门技术。不要以为PLSQL的原理和优化和“我”无关,“我”只关注业务的实现而...
  • lifetragedy
  • lifetragedy
  • 2016年05月05日 10:23
  • 38277

SQL Server 性能调优 之执行计划(Execution Plan)调优

SQL Server 性能调优 之执行计划(Execution Plan)调优
  • sqlchen
  • sqlchen
  • 2014年06月19日 15:53
  • 2418

MongoDB 性能优化:分析执行计划

前言cursor.explain("executionStats") 和 db.collection.explain("executionStats") 方法提供一个 查询的性能统计情况。这些数据输出...
  • defonds
  • defonds
  • 2016年05月11日 20:20
  • 8496

oracle性能调优-执行计划

这几天跑存储过程,有时间一跑就是几十分钟,等的确实有点辛苦;于是就想研究一下sql执行的性能,看看存储过程执行慢的问题出在什么地方。     要进行oracle性能调优,不用多说,第一步肯定是看执行计...
  • a275838263
  • a275838263
  • 2016年04月18日 14:39
  • 312

Informix SQL 语句性能调优最佳实践

SQL 执行计划 关于执行计划,我们可以把它简单的理解成 SQL 语句执行时访问数据的方式。执行计划的优劣是影响 SQL 执行效率的重要因素。它包括:查询优化器认为最优的数据访问路径,返回记录数的估...
  • ltt4172406
  • ltt4172406
  • 2014年07月24日 17:08
  • 2439

性能调优第三篇-执行计划常见操作符

前面的文章知道了如何格式化,和如何查看执行计划。这篇文章主要介绍常见的操作符...
  • z10843087
  • z10843087
  • 2017年09月16日 18:09
  • 707

第二篇:为最佳性能调优 Nginx

 这篇文章是《打造3百万次请求/秒的高性能服务器集群》系列的第2部分,在这个部分中你可以使用任何一种 WEB 服务器,不过我决定使用 Nginx,因其轻量级、高可靠及高性能的优点。 通常来说,...
  • zhongyhc
  • zhongyhc
  • 2015年11月16日 10:29
  • 419

数据库性能调优技术─嵌套循环执行计划

 http://database.csdn.net/page/7ac56dff-3366-4421-8641-54f304b0cf2f2008-02-22 来自:java060515 show_ads...
  • tycsl
  • tycsl
  • 2008年02月21日 21:18
  • 742
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:性能调优第二篇-执行计划
举报原因:
原因补充:

(最多只允许输入30个字)