DB2优化器对SQL的最优存取路的判断的条件是什么? |
本文标签:DB2优化器 以下的文章主要向大家讲述的是DB2优化器是根据哪些条件来对对SQL的最优存取路径进行判断的呢?我们大家都知道DB2的优化器主要是基于成本的优化器,也就是CBO(Cost Based Optmizer) 。也就是说DB2 优化器会应用查询成本公式 。 该公式对每条可能的存取路径的四个因素进行评估和权衡:CPU 成本、I/O 成本、DB2 系统目录中的统计信息和实际的 SQL 语句 。 那么我们来简单看一下DB2的优化器的工作流程: 1.DB2的优化器,在接收到SQL语句后,会首先校验SQL的语法,确保是正确的SQL 2.根据当前的系统环境信息,生成最优的执行计划来优化SQL语句 3.把SQL翻译成计算机指令语言,并执行这个优化后的SQL 4.返回结果,或者存储它们,以便将来的执行 在我们看来,DB2 系统目录中统计信息是让DB2优化器正确工作的一个非常重要的依据 。这些统计信息向优化器提供了与正在被优化的 SQL 语句将要访问的表状态相关的信息 。这些信息主要包括: Table--包括表的记录数、PAGE、PCTFREE以及COMPRESS等信息,相关的系统视图是:sysstat.tables、syscat.tables Columns—包括COLUMNS的数量、长度、分布特征以及COMPRESS等信息,相关的系统视图是:sysstat.columns、syscat. columns Index--包括是否存在索引、索引的组织(叶子页的数量和级别的数量)、索引键的离散值的数量以及是否群集索引, 相关的系统视图是:sysstat.indexes、syscat. indexes 上述的相关内容就是对DB2优化器是根据什么来判断SQL的最优存取路径呢的描述,希望会给你带来一些帮助在此方面 。 |