微课sql优化(5)、统计信息收集(3)-关于默认采样率
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,1、关于默认采样率在不同版本的Oracle上统计信息收集的默认值不一定相同,例如: ESTIMATE_PERCENT :默认值: 9i:100% 10g:DBMS_STATS.AUTO_SAMPLE_
千家信息网最后更新 2025年11月08日微课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安全错误
数据库的锁怎样保障安全
达梦数据库 开发版 数据量限制
PQDD是关于( )数据库
现在的网络安全工程师
电脑网络技术的标杆人物
网络安全隐患手抄报大全
软件开发技术提取图片
天猫服务器冻结退款功能
网络技术软件开发学校
海南高品质戴尔服务器云主机
那些操作会让浏览器向服务器
江西省银行网络安全
仓储配送网络技术
网络安全论文题目范文
北京盛世泰伯网络技术
oscar数据库厂家
服务器安装位置示意图
腾讯微梦创科网络技术有限公司
用php程序 软件开发
迅捷软件开发
软件开发工作规划和目标
宁波象山区戴尔机架式服务器
国外主要全文数据库的特点
泰州软件开发费用
国外服务器下载很慢
我的世界服务器怎么防被偷家
DB7是什么数据库
徐州网络安全运维
美国科技公司互联网
软件开发学数学
中国有影响力人物数据库张绍桥