设为首页 加入收藏

TOP

Oracle11gNew性能增强(六)
2014-11-24 08:06:53 来源: 作者: 【 】 浏览:6
Tags:Oracle11gNew 性能 增强
然后计算所有列的统计信息(包括创建的相关组的统计信息)。 注: CREATE_EXTENDED_STATS 函数会返回一个虚拟的隐藏列名称,如SYS_STUW_5RHLX443AN1ZCLPE_GLE4。 根据幻灯片中的示例,可以使用以下SQL 确定名称:select dbms_stats.show_extended_stats_name("jfv','vehicle','(make,model)') from dual 创建以后,可以使用ALL | DBA | USER_STAT_EXTENSIONS视图检索统计信息扩展。
表达式统计信息:概览 \ 表达式统计信息:概览 与列表达式相关的谓词是查询优化程序的一个重要的问题。计算function(Column) =constant 形式的谓词的选择性时,优化程序将假定静态选择性值为1%。很明显,这种方式是错误的,会导致优化程序生成不是最理想的计划。 查询优化程序已得到了扩展,可以在有限的情况下更好地处理此类谓词。在这些情况下,函数将保留列的数据分布特征,因而允许优化程序使用列统计信息。例如,TO_NUMBER 就是此类函数之一。 为了在查询优化过程中对内置函数求值,以便使用动态采样来获得更好的选择性,进一步增强了相应的功能。最后,优化程序将收集所创建的虚拟列的统计信息以支持基于函数的索引。 但是,这些解决方案或者局限于特定的函数类,或者仅适合于用于创建基于函数的索引的表达式。通过使用Oracle Database 11 g 中的表达式统计信息,您可以使用更加全面的解决方案;这些解决方案包括了用户定义的任意函数,并且与是否存在基于函数的索引无关。如幻灯片中的示例所示,此功能将依靠虚拟列基础结构来创建列表达式的统计信息。
延迟统计信息发布:概览 \ 延迟统计信息发布:概览 默认情况下,统计信息收集操作每次完成一个对象(表、分区、子分区或索引)的迭代时,都会自动将新的统计信息存储在数据字典中。优化程序会在这些新的统计信息写入到数据字典中时立即发现它们;这些新的统计信息称为“当前统计信息”。这种自动发布功能可能会给DBA 造成困扰,因为永远无法确定新统计信息在几天或几个星期后会是什么状态。此外,优化程序所用的统计信息可能会不一致;例如,如果表统计信息的发布时间早于其索引、分区或子分区的统计信息的发布时间,就会出现统计信息不一致的情况。要避免这些潜在的问题,在Oracle Database 11 g 版本1 中,可以将优化程序统计信息的收集步骤与发布步骤中相分离。将这两个步骤分离有两个优点: 支持作为原子事务处理的统计信息收集操作。方案中的所有表和从属对象(索引、分区、子分区)的统计信息将在同一时间发布。这种新的模式有两个有利的属性:优化程序将始终有一个一致的统计信息视图;如果收集步骤在收集过程中由于某种原因而失败,则当使用DBMS_STAT.RESUME_GATHER_STATS 过程重新启动该步骤时,可以从中断的位置继续操作。 DBA 可以通过使用测试系统上新收集的统计信息运行所有或部分工作量来验证新统计信息;如果对测试结果感到满意,则继续执行发布步骤使这些统计信息成为生产环境中的当前统计信息。
将收集选项PUBLISH指定为FALSE时,收集的统计信息将存储在暂挂统计信息表中,而不会成为当前统计信息。可通过一些视图访问这些暂挂统计信息:{ALL " DBA |USER}_{ TAB | COL | IND | TAB_HISTGRM }_PENDING_STATS。 要测试暂挂统计信息,您有两种选择: 使用新的DBMS_STAT.EXPORT_PENDING_STATS过程,将暂挂统计信息传送至自己的统计信息表,从可以重新导入统计信息表的位置将其导出到测试系统,然后使用DBMS_STAT.IMPORT_TABLE_STATS 过程将暂挂统计信息作为当前统计信息呈现。 通过将会话初始化参数OPTIMIZER_USE_PENDING_STATISTICS更改为TRUE,启用会话暂挂统计信息。默认情况下,这个新的初始化参数被设置为FALSE。这意味着,在您的会话中将使用当前优化程序统计信息来分析SQL 语句。通过在会话中将该参数设置为TRUE,可以切换为暂挂统计信息。如果测试了暂挂统计信息后对其感到满意,则可使用新的DBMS_STAT.PUBLISH_PENDING_STATS 过程在生产环境中将其发布为当前统计信息。
延迟统计信息发布:示例 延迟统计信息发布:示例 1. 使用SET_TABLE_PREFS过程将PUBLISH选项设置为FALSE。这将阻止下一个统计信息收集操作自动将统计信息发布为当前统计信息。根据第一条语句,此情况仅对SH.CUSTOMERS表有效。 2. 在字典的临时等待区中收集SH.CUSTOMERS表的统计信息。 3. 通过将OPTIMIZER_USE_PENDING_STATISTICS设置为TRUE,从会话中测试新的暂挂统计信息集。 4. 发布对SH.CUSTOMERS的查询。 5. 如果对测试结果感到满意,则使用PUBLISH_PENDING_STATS 过程将SH.CUSTOMERS的暂挂统计信息作为当前统计信息呈现。 注:要分析暂挂统计信息与当前统计信息之间的差异,可以将暂挂统计信息导出到自己的统计信息表,然后使用新增的DBMS_STAT.DIFF_TABLE_STATS 函数。
小结 使用ADDM 的新功能 使用自动内存管理 使用统计信息增强功能
首页 上一页 3 4 5 6 下一页 尾页 6/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)