设为首页 加入收藏

TOP

Oracle11gNew性能增强(五)
2014-11-24 08:06:53 来源: 作者: 【 】 浏览:7
Tags:Oracle11gNew 性能 增强
与自动优化程序统计信息收集任务关联起来。DBA 可以使用DBMS_STATS程序包管理幻灯片中显示的收集统计信息选项。
一般情况下,可以在表、方案、数据库和全局等级别设置、获取、删除、导出和导入这些首选项。全局首选项用于没有首选项的表,而数据库首选项则用于设置针对所有表的首选项。以各种方式指定的首选项值的优先顺序为从外圈到内圈(如幻灯片中所示)。 最后三个突出显示的选项是Oracle Database 11 g 版本1 中的新增选项: PUBLISH用于确定是将统计信息发布到字典还是先将其存储在临时等待区中。 STALE_PERCENT 用于确定阈值级别,系统认为该级别的对象拥有过时的统计信息。 该值是上次收集统计信息以来修改过的行数的百分比。示例仅将SH.SALES 的默认值10% 更改为13% 。 INCREMENTAL 用于以递增方式收集有关分区表的全局统计信息。 注:可以使用 DBA_TAB_STAT_PREFS 视图说明所有相关表的全部有效统计信息首选项设置。
使用Enterprise Manager 设置全局首选项 \ 使用Enterprise Manager 设置全局首选项 可以使用Enterprise Manager 来控制全局首选项设置。可以在“Manage Optimizer Statistics(管理优化程序统计信息)”页上执行此操作;此页的访问方法如下:在“Database(数据库)”主页上单击“Server (服务器)”选项卡,然后单击“Manage Optimizer Statistics(管理优化程序统计信息)”链接,再单击“Global Statistics Gathering Options(全局统计信息收集选项)”链接。 在“Global Statistics Gathering Options(全局统计信息收集选项)”页上,在“Gather Optimizer Statistics Default Options(收集优化程序统计信息默认选项)”部分更改全局首选项。完成后,单击“Apply(应用)”按钮。 注:要在对象级别或方案级别更改统计信息收集选项,请在“Manage Optimizer Statistics(管理优化程序统计信息)”页上单击“Object Level Statistics Gathering Preferences (对象级别统计信息收集首选项)”链接。
分区表和增量统计信息:概览 \ 分区表和增量统计信息:概览 对于分区表,系统会维护每个分区上的统计信息和表的整体统计信息。一般情况下,如果使用日期范围值对表进行了分区,则进行数据修改(DML) 的分区会非常少。例如,假定有一个存储销售事务处理的表。您可以根据销售日期对表进行分区,每个分区包含一个季度的事务处理。大多数DML 活动都发生在存储当前季度事务处理的分区上。其它分区中的数据将保持不变。系统当前跟踪的是表级别和(子)分区级别的DML 监视信息。仅为自上次收集统计信息以来已发生了显著更改(当前阈值为10% )的那些分区(幻灯片的示例中为当前季度的分区)收集统计信息。但是,全局统计信息是通过扫描整个表来收集的,这使得收集分区表的统计信息的开销很大,特别是在有些分区存储在低速设备中并且不经常修改时。 Oracle Database 11 g 可以加快某些全局统计信息(如不同值的数量)的收集速度。与扫描整个表的传统方式不同,有一种新的机制可以定义全局统计信息;这种机制只扫描发生了更改的那些分区,而继续使用以前为未更改的那些分区收集的统计信息。简而言之,可对这些全局统计信息进行增量维护。
当前可以使用DBMS_STATS程序包来指定分区表的粒度。例如,可以指定自动、全局、全局和分区、全部、分区以及子分区。如果指定的粒度包括GLOBAL (全局),并且表的收集选项被标记为INCREMENTAL (增量),则使用增量机制收集全局统计信息。此外,不管是否指定了PARTITION(分区)粒度,都会收集已更改分区的统计信息。 注:新的机制不以增量方式维护直方图和密度全局统计信息。
基于散列的列统计信息采样 计算列统计信息是统计信息收集过程中开销最大的步骤。 行采样技术提供的是带偏差数据分布的不精确结果。 在将ESTIMATE_PERCENT 设置为AUTO_SAMPLE_SIZE时使用新的近似计数技术。 推荐使用 AUTO_SAMPLE_SIZE。 其它情况下,使用旧的行采样技术。
基于散列的列统计信息采样 对于查询优化,必须准确估计不同值的数量。默认情况下,如果没有直方图,优化程序将使用不同值的数量来估计列谓词的选择性。Oracle Database 10 g 使用的算法利用一个SQL 语句来计算不同值的数量;该语句可以计算基础表样本中存在的不同值数量。使用Oracle Database 10 g,可以在收集列统计信息时使用两个选项: 1. 使用小样本大小,这样得到的结果虽然精确度较低,但可缩短执行时间。 2. 使用大样本或全表扫描,这将获得很精确的结果,但执行时间很长。 在Oracle Database 11 g 中有一种收集列统计信息的新方法,其精确度与扫描接近,执行时间等于小样本的执行时间(1% 至5%)。如果从DBMS_STATS调用某个过程,并且已将ESTIMATE_PERCENT 收集选项设置为AUTO_SAMPLE_SIZE (默认设置),则会使用这项新技术。如果您指定了AUTO_SAMPLE_SIZE 以外的其它值,则将使用基于行采样的算法来收集不同值的数量。这样可以在指定采样百分比时保留旧的行为。
注:使用Oracle Database 11 g 时,建议使用AUTO_SAMPLE_SIZE 。新的估算机制修复了Oracle Database 10 g 中以下最常遇到的问题: 自动选项停止得太早,并且生成了不准确的统计信息,用户指定的样本大小大于自动使用的样本大小。 自动选项停止得太晚,性能很差,用户指定的样本大小小于自动使用的样本大小。
多列统计信息:概览 \ 多列统计信息:概览 使用Oracle Database 10 g 时,在以下有限的情况下,查询优化程序在计算多个谓词的选择性时,将考虑列之间的相互关系: 如果连接谓词的所有列与连接索引键的所有列匹配,并且谓词是等值联接中的等式,则优化程序将使用索引中的不同键(NDK) 数量来估计选择性 (1/NDK) 。 如果将DYNAMIC_SAMPLING 设置为级别4 ,则查询优化程序将使用动态采样来估计涉及同一个表中多个列的复杂谓词的选择性。但是,样本的大小很小,并且解析时间有所增加。因此,样本的统计信息可能不准确,因此可能会弊大于利。 在其它所有情况下,优化程序将假定复杂谓词中所用的列的值互不相关。优化程序会通过将各个谓词中的选择性相乘来估计连接谓词的选择性。这种方式势必会低估选择性。为了避开此问题,Oracle Database 11 g 允许收集、存储和使用以下统计信息来捕获两个或更多列(也称为列组)之间的功能相关性:不同值的数量、Null 值的数量、频率直方图和密度。
例如,假定有一个VEHICLE表,其中存储了有关汽车的信息。MAKE 列和MODEL列是高度相关的,并且由MODEL决定MAKE。这是一种很强的依赖关系,优化程序应将这两个列看成是高度相关的两个列。可以使用CREATE_EXTENDED_STATS 函数将该关系传送给优化程序(如幻灯片上的示例所示),
首页 上一页 2 3 4 5 6 下一页 尾页 5/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇诊断和解决row chained and migra.. 下一篇自动诊断工具ADDM

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·上海启源芯动力的福 (2025-12-26 20:50:23)
·为什么动力电池安全 (2025-12-26 20:50:20)
·动力电池是怎么造出 (2025-12-26 20:50:18)
·C 内存管理 | 菜鸟教 (2025-12-26 20:20:37)
·如何在 C 语言函数中 (2025-12-26 20:20:34)