关于SQL Tuning的知识体系

要很好的做SQL Tuning的工作,非常有必要理解SQL 优化引擎是如何工作,而SQL执行计划就是SQL 优化引擎工作的结果。

要读懂执行计划,需要知道access path,需要理解join order,join method,还需要知道查询转换、查询重写。

执行计划是SQL优化引擎最后选择的结果,那这个结果是如何选出来的?首先,现在主流的优化引擎都是cost base的,也就是CBO。这里的成本,是cpu cost + io cost。我们暂且只看io cost。

在物理层面上,与IO cost最直接的是,读多少个数据块。但在应用层面上,我们看到是需要读多少行的数据。那这两者如何联系起来?统计信息,这里也就回答了,为什么统计信息对CBO 很重要。

在默认情况下,CBO使用统计信息是基于一个数学理论基础:数据是均匀分布的。当然有特殊,数据有倾斜,因此需要直方图。

基于以上的内容,初学者做SQL Tuning还是比较困难的,因此Oracle 引入了如SQL Tuning Advisor,SQL Access Advisor等自动优化工具。

简单sql -》 复杂sql的执行计划
	-》 查看执行计划
		-》 解读执行计划 (解析树)
	
	sql优化引擎
		-》 RBO & CBO
			-》 cost = cpu cost + io cost
				—》 例子
			-》CBO不是万能的(过多表链接,不能尝试所有的方案)

		-》 sql 优化引擎的工作
			-》 访问路径
			-》 表join的方式(字典)
			-》 查询重写
			
		-》 计算成本
			-》 基本概念(基数,选择率)	
				-》 统计信息
					-》 直方图

你可能感兴趣的:(关于SQL Tuning的知识体系)