Oracle 12c新特性:自动检测多列统计信息
164 浏览量
更新于2024-08-31
收藏 62KB PDF 举报
"Oracle 12c新特性之如何检测有用的多列统计信息详解"
在Oracle数据库12c中,引入了一个重要的统计信息管理新特性,即自动检测有用列组信息。这一特性使得数据库能够自动识别对查询优化有显著影响的多列统计信息,从而帮助提升性能。传统的统计信息收集往往只关注单列,但在多列索引或连接查询中,多列统计信息的缺失可能会导致优化器做出不理想的执行计划。
在Oracle 12c之前,用户需要手动收集多列统计信息,这是一个费时费力的过程,尤其是在大型数据库中。而在12c中,通过DBMS_STATS包中的`SEED_COL_USAGE`和`REPORT_COL_USAGE`过程,数据库可以基于工作负载分析哪些列组合可能是有用的统计信息。
首先,我们需要做一些环境准备,例如创建一个测试表`customers_test`,这个表可以是基于实际业务数据的副本,以便于模拟真实的工作负载。在上述例子中,用户已经连接到`sh`用户并创建了`customers_test`表,它是`customers`表的复制。
使用`SEED_COL_USAGE`过程,我们可以开始记录查询活动和列使用情况。这个过程会在后台跟踪查询,收集列的使用信息,但并不会立即生成统计信息。这一步骤是为了收集足够的信息来判断哪些列组可能对优化器有帮助。
然后,通过调用`REPORT_COL_USAGE`,我们可以分析这些收集的数据,生成报告,报告将列出可能有用的列组以及它们在查询中的出现频率。这些信息可以帮助我们决定应该为哪些列组合收集扩展的统计信息。
值得注意的是,这种方法不适用于包含表达式的列统计,因为表达式的统计信息通常更复杂,不能简单地通过列组合来获取。此外,虽然这个特性提供了一定程度的自动化,但仍然需要数据库管理员根据实际情况评估和调整,因为不是所有推荐的列组都适合收集统计信息,有些可能因为数据分布的特殊性或者查询模式的复杂性而无效。
在实际应用中,我们可以结合`DBMS_STATS.GATHER_TABLE_STATS`函数,根据`REPORT_COL_USAGE`的结果,有针对性地收集多列统计信息,这样可以避免无谓的资源消耗,同时确保优化器能做出更好的决策。
总结来说,Oracle 12c的这个新特性提高了统计信息管理的效率和准确性,使得数据库能够更好地适应复杂的工作负载,提升了查询性能。通过自动检测有用的多列统计信息,DBA可以更专注于优化策略的制定,而不是花费大量时间在手动分析和收集统计信息上。
2014-02-17 上传
2020-09-09 上传
2016-04-14 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
weixin_38686658
- 粉丝: 5
- 资源: 915
最新资源
- C语言数组操作:高度检查器编程实践
- 基于Swift开发的嘉定单车LBS iOS应用项目解析
- 钗头凤声乐表演的二度创作分析报告
- 分布式数据库特训营全套教程资料
- JavaScript开发者Robert Bindar的博客平台
- MATLAB投影寻踪代码教程及文件解压缩指南
- HTML5拖放实现的RPSLS游戏教程
- HT://Dig引擎接口,Ampoliros开源模块应用
- 全面探测服务器性能与PHP环境的iprober PHP探针v0.024
- 新版提醒应用v2:基于MongoDB的数据存储
- 《我的世界》东方大陆1.12.2材质包深度体验
- Hypercore Promisifier: JavaScript中的回调转换为Promise包装器
- 探索开源项目Artifice:Slyme脚本与技巧游戏
- Matlab机器人学习代码解析与笔记分享
- 查尔默斯大学计算物理作业HP2解析
- GitHub问题管理新工具:GIRA-crx插件介绍