微课sql优化(5)、统计信息收集(3)-关于默认采样率
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,1、关于默认采样率在不同版本的Oracle上统计信息收集的默认值不一定相同,例如: ESTIMATE_PERCENT :默认值: 9i:100% 10g:DBMS_STATS.AUTO_SAMPLE_
千家信息网最后更新 2026年11月02日微课sql优化(5)、统计信息收集(3)-关于默认采样率
在不同版本的Oracle上统计信息收集的默认值不一定相同,例如: ESTIMATE_PERCENT :默认值: 9i:100% 10g:DBMS_STATS.AUTO_SAMPLE_SIZE(使用非常小的估计百分比) 11g:DBMS_STATS.AUTO_SAMPLE_SIZE(使用较大的估算百分比 - 100%) METHOD_OPT:默认值 : 9i:"FOR ALL COLUMNS SIZE 1",实际上没有详细的列统计。 10g和11g:"FOR ALL COLUMNS SIZE AUTO" - 此设置意味着DBMS_STATS决定哪些列添加直方图,制定更好的计划。 在11g中,使用ESTIMATE_PERCENT的默认值100%,统计信息收集尽可能准确。收集统计信息时间限制,在以前的版本中,100%的样本是不可能的,但是11g实现了一种新的哈希算法来计算统计数据而不是排序(在9i和10g中,"慢"部分通常是排序),这显着提高了收集时间和资源使用。
exec DBMS_STATS.DELETE_TABLE_STATS('HT','A_AMT'); exec dbms_stats.gather_table_stats('HT','A_AMT'); set line 200 col owner for a10 col table_name for a20 col LAST_ANALYZED for a30 SELECT owner, table_name, num_rows, sample_size, trunc(sample_size / num_rows * 100) estimate_percent, to_char(LAST_ANALYZED,'yyyy-mm-dd hh34:mi:ss') LAST_ANALYZED FROM DBA_TAB_STATISTICS WHERE owner='HT' and table_name='A_AMT'; oracle 10g测试结果 SQL> exec dbms_stats.gather_table_stats('HT','A_AMT'); PL/SQL procedure successfully completed. SQL> set line 200 SQL> col owner for a10 col table_name for a20 col LAST_ANALYZED for a30 SELECT owner, table_name, num_rows, sample_size, trunc(sample_size / num_rows * 100) estimate_percent, to_char(LAST_ANALYZED,'yyyy-mm-dd hh34:mi:ss') LAST_ANALYZED FROM DBA_TAB_STATISTICS WHERE owner='HT' and table_name='A_AMT';SQL> SQL> SQL> 2 3 4 5 6 7 8 OWNER TABLE_NAME NUM_ROWS SAMPLE_SIZE ESTIMATE_PERCENT LAST_ANALYZED ---------- -------------------- ---------- ----------- ---------------- ------------------------------ HT A_AMT 59968 59968 100 2017-09-22 02:07:47 SQL> !date Fri Sep 22 02:08:00 CST 2017 SQL> select version from v$instance; VERSION --------------------------------------------------- 10.2.0.5.0 SQL> oracle 11g测试结果 OWNER TABLE_NAME NUM_ROWS SAMPLE_SIZE ESTIMATE_PERCENT ---------- -------------------- ---------- ----------- ---------------- HT A_AMT 59968 59968 100
1、 Oracle 10g可能 使用非常小的估计百分比,建议手工100%收集,至少30%。 2、 在11g中,使用ESTIMATE_PERCENT的默认值100%,统计信息收集尽可能准确。-- 11g:DBMS_STATS.AUTO_SAMPLE_SIZE(使用较大的估算百分比 - 100%) 3、直方图收集: METHOD_OPT:默认值 , 10g和11g:"FOR ALL COLUMNS SIZE AUTO" - 此设置意味着DBMS_STATS决定哪些列添加直方图,制定更好的计划。 4、了解 统计信息收集: table statistics 、 index statistics 、 column statistics,各指标内容及作用 。
1、关于默认采样率
在不同版本的Oracle上统计信息收集的默认值不一定相同,例如: ESTIMATE_PERCENT :默认值: 9i:100% 10g:DBMS_STATS.AUTO_SAMPLE_SIZE(使用非常小的估计百分比) 11g:DBMS_STATS.AUTO_SAMPLE_SIZE(使用较大的估算百分比 - 100%) METHOD_OPT:默认值 : 9i:"FOR ALL COLUMNS SIZE 1",实际上没有详细的列统计。 10g和11g:"FOR ALL COLUMNS SIZE AUTO" - 此设置意味着DBMS_STATS决定哪些列添加直方图,制定更好的计划。 在11g中,使用ESTIMATE_PERCENT的默认值100%,统计信息收集尽可能准确。收集统计信息时间限制,在以前的版本中,100%的样本是不可能的,但是11g实现了一种新的哈希算法来计算统计数据而不是排序(在9i和10g中,"慢"部分通常是排序),这显着提高了收集时间和资源使用。
2、统计信息收集了什么,有什么作用
- table statistics
index statistics

column statistics
NUM_DISTINCT : 计算选择性。(例: 1/NDV) LOW_VALUE and HIGH_VALUE: 对所有数据类型,CBO假设在高值和低值之间是均匀分布的。这些值用于计算范围扫描的选择性。 NUM_NULLS: 对存在空值的列,使用is null 和is not null查询时,计算选择性 DENSITY: 未收集直方图 Density = 1 / Number of distinct NON null values The number of distinct NON-null values for a column (COL1) on table TABLE1 can be obtained as follows: select distinct count(COL1) from TABLE1 where COL1 is not null; 收集直方图 A non-popular value is one that does not span multiple bucket end points. A popular value is one that spans multiple end points. For non-popular values the density is calculated as the number of non-popular values divided by the total number of values. Formula: Density = Number of non-popular values ---------------------------- total number of values We only use the density statistic for non-popular values. Popular values calculate the selectivity of a particular column values by using histograms as follows: The Selectivity for popular values is calculated as the number of end points spanned by that value divided by the total number of end points. Formula: Selectivity = Number of end points spanned by this value ------------------------------------------ total number of end points
3、练习3:10g和11g自动采样率测试
exec DBMS_STATS.DELETE_TABLE_STATS('HT','A_AMT'); exec dbms_stats.gather_table_stats('HT','A_AMT'); set line 200 col owner for a10 col table_name for a20 col LAST_ANALYZED for a30 SELECT owner, table_name, num_rows, sample_size, trunc(sample_size / num_rows * 100) estimate_percent, to_char(LAST_ANALYZED,'yyyy-mm-dd hh34:mi:ss') LAST_ANALYZED FROM DBA_TAB_STATISTICS WHERE owner='HT' and table_name='A_AMT'; oracle 10g测试结果 SQL> exec dbms_stats.gather_table_stats('HT','A_AMT'); PL/SQL procedure successfully completed. SQL> set line 200 SQL> col owner for a10 col table_name for a20 col LAST_ANALYZED for a30 SELECT owner, table_name, num_rows, sample_size, trunc(sample_size / num_rows * 100) estimate_percent, to_char(LAST_ANALYZED,'yyyy-mm-dd hh34:mi:ss') LAST_ANALYZED FROM DBA_TAB_STATISTICS WHERE owner='HT' and table_name='A_AMT';SQL> SQL> SQL> 2 3 4 5 6 7 8 OWNER TABLE_NAME NUM_ROWS SAMPLE_SIZE ESTIMATE_PERCENT LAST_ANALYZED ---------- -------------------- ---------- ----------- ---------------- ------------------------------ HT A_AMT 59968 59968 100 2017-09-22 02:07:47 SQL> !date Fri Sep 22 02:08:00 CST 2017 SQL> select version from v$instance; VERSION --------------------------------------------------- 10.2.0.5.0 SQL> oracle 11g测试结果 OWNER TABLE_NAME NUM_ROWS SAMPLE_SIZE ESTIMATE_PERCENT ---------- -------------------- ---------- ----------- ---------------- HT A_AMT 59968 59968 100
4、小结
1、 Oracle 10g可能 使用非常小的估计百分比,建议手工100%收集,至少30%。 2、 在11g中,使用ESTIMATE_PERCENT的默认值100%,统计信息收集尽可能准确。-- 11g:DBMS_STATS.AUTO_SAMPLE_SIZE(使用较大的估算百分比 - 100%) 3、直方图收集: METHOD_OPT:默认值 , 10g和11g:"FOR ALL COLUMNS SIZE AUTO" - 此设置意味着DBMS_STATS决定哪些列添加直方图,制定更好的计划。 4、了解 统计信息收集: table statistics 、 index statistics 、 column statistics,各指标内容及作用 。
索引
数据
统计
数量
信息
直方图
不同
百分
百分比
结点
查询
相同
叶子
指向
结果
选择性
测试
选择
驱动
较大
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技海报
智能科技公司是互联网公司吗
互联网科技有限公司图片
上海万想互联网科技
互联网前沿科技
互联网科技股有哪些
深圳互联网科技怎么样
云创客互联网科技公司
南山科技园互联网公司有哪些
本届互联网博览会上的黑科技
互联网新科技动漫ppt素材
保险科技服务互联网营销体系
科技互联网的核心竞争力
梅州GM互联网络科技有限公司
互联网科技包装股份有限公司上市
互联网金融运营模式中的金融科技
北京互联网科技类企业分布
北京军民互联网科技公司
青岛互联网科技园
互联网科技创业计划的风险分析
山东特亿宝互联网科技有限公司
互联网科技财经
上海卓越科技 互联网
互联网科技类展会
中国的互联网科技企业的崛起
花神(南京)互联网科技有限公司
上海钢联属于互联网科技股吗
宁波跨境商互联网科技有限公司
互联网界的黑科技
长沙易易互联网科技有限公司