Deferred statistics publish-延迟统计信息发布功能介绍
---创建测试表
drop table dsptest1;
create table dsptest1 tablespace ts_acct_dat_01 as select * from dba_objects where object_type in ('TABLE','PROGRAM');
select object_type,count(1) from dsptest1 group by object_type;
OBJECT_TYPE COUNT(1)
------------------- ----------
PROGRAM 19
TABLE 63650
create index ind_objtype on dsptest1(object_type) tablespace ts_acct_ind_01;
---在没有统计信息的情况下、以禁用dynamic sampling的方式运行查询,在数据分布具有明显倾斜度的情况下,迫使optimizer走索引,如果不禁用dynamic sampling optimizer会选择FTS
alter session set optimizer_dynamic_sampling=0;
set linesize 170
explain plan for select * from dsptest1 where object_type='TABLE';
select * from table(dbms_xplan.display());
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 2822084974
-------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 758 | 153K| 79 (0)| 00:00:01 |
| 1 | TABLE ACCESS BY INDEX ROWID| DSPTEST1 | 758 | 153K| 79 (0)| 00:00:01 |
|* 2 | INDEX RANGE SCAN | IND_OBJTYPE | 303 | | 75 (0)| 00:00:01 |
-------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------
2 - access("OBJECT_TYPE"='TABLE')
14 rows selected.
---查看dsptest1表的统计信息偏好值
select dbms_stats.get_prefs('publish','ad','dsptest1') from dual;
DBMS_STATS.GET_PREFS('PUBLISH','AD','DSPTEST1')
--------------------------------------------------------------------------------
TRUE
---设置publish偏好值为FALSE
exec dbms_stats.set_table_prefs('ad','dsptest1','publish','false');
select dbms_stats.get_prefs('publish','ad','dsptest1') from dual;
DBMS_STATS.GET_PREFS('PUBLISH','AD','DSPTEST1')
--------------------------------------------------------------------------------
FALSE
---执行统计(带histogram信息)
exec dbms_stats.gather_Table_stats('ad','dsptest1',cascade=>TRUE,method_opt=>'for all columns size skewonly');
---查看数据字典里无相关统计信息
set linesize 150
select owner,table_name,num_rows,last_analyzed from dba_tab_statistics where table_name='DSPTEST1';
OWNER TABLE_NAME NUM_ROWS LAST_ANALYZED
------------------------------ ------------------------------ ---------- -----------------
AD DSPTEST1
select owner,index_name,blevel,clustering_factor from dba_ind_statistics where index_name='IND_OBJID';
no rows selected
---查看pending区域里的统计信息
select owner,table_name,num_rows,last_analyzed from dba_tab_pending_stats where table_name='DSPTEST1';
OWNER TABLE_NAME NUM_ROWS LAST_ANALYZED
------------------------------ ------------------------------ ---------- -----------------
AD DSPTEST1 63669 20150104 07:43:42
select owner,index_name,blevel,clustering_factor from dba_ind_pending_stats where index_name='IND_OBJTYPE';
OWNER INDEX_NAME BLEVEL CLUSTERING_FACTOR
------------------------------ ------------------------------ ---------- -----------------
AD IND_OBJTYPE 913
---OPTIMIZER_USE_PENDING_STATISTICS=FALSE时重新执行查询,用的还是range scan
SQL> show parameter optimizer_use_pending_statistics
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
optimizer_use_pending_statistics boolean FALSE
alter session set optimizer_dynamic_sampling=0;
set linesize 170
explain plan for select * from dsptest1 where object_type='TABLE';
select * from table(dbms_xplan.display());
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 2822084974
-------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 758 | 153K| 79 (0)| 00:00:01 |
| 1 | TABLE ACCESS BY INDEX ROWID| DSPTEST1 | 758 | 153K| 79 (0)| 00:00:01 |
|* 2 | INDEX RANGE SCAN | IND_OBJTYPE | 303 | | 75 (0)| 00:00:01 |
-------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------
2 - access("OBJECT_TYPE"='TABLE')
---OPTIMIZER_USE_PENDING_STATISTICS=TRUE时重新执行查询,用上了FTS,说明optimizer使用了pending statistics
alter Session set OPTIMIZER_USE_PENDING_STATISTICS=TRUE;
SQL> show parameter optimizer_use_pending_statistics
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
optimizer_use_pending_statistics boolean TRUE
alter session set optimizer_dynamic_sampling=0;
set linesize 170
explain plan for select * from dsptest1 where object_type='TABLE';
select * from table(dbms_xplan.display());
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 2565776708
------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 63652 | 5967K| 164 (2)| 00:00:02 |
|* 1 | TABLE ACCESS FULL| DSPTEST1 | 63652 | 5967K| 164 (2)| 00:00:02 |
------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1 - filter("OBJECT_TYPE"='TABLE')
13 rows selected.
---publish pending stats
exec dbms_stats.publish_pending_stats(ownname=>'ad',tabname=>'dsptest1');
---查看数据字典里的统计信息
set linesize 150
select owner,table_name,num_rows,last_analyzed from dba_tab_statistics where table_name='DSPTEST1';
OWNER TABLE_NAME NUM_ROWS LAST_ANALYZED
------------------------------ ------------------------------ ---------- -----------------
AD DSPTEST1 63669 20150104 07:43:42
select owner,index_name,blevel,clustering_factor,last_analyzed from dba_ind_statistics where index_name='IND_OBJTYPE';
OWNER INDEX_NAME BLEVEL CLUSTERING_FACTOR LAST_ANALYZED
------------------------------ ------------------------------ ---------- ----------------- -----------------
AD IND_OBJTYPE 1 913 20150104 07:43:45
---OPTIMIZER_USE_PENDING_STATISTICS=FALSE再次执行查询,optimizer准确的选择了FTS,这次是从data dictionary里获取的statistics
alter Session set OPTIMIZER_USE_PENDING_STATISTICS=FALSE;
set linesize 170
explain plan for select * from dsptest1 where object_type='TABLE';
select * from table(dbms_xplan.display());
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 2565776708
------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 63652 | 5967K| 164 (2)| 00:00:02 |
|* 1 | TABLE ACCESS FULL| DSPTEST1 | 63652 | 5967K| 164 (2)| 00:00:02 |
------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1 - filter("OBJECT_TYPE"='TABLE')
13 rows selected.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/53956/viewspace-1376621/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/53956/viewspace-1376621/
Deferred statistics publish-延迟统计信息发布功能介绍相关推荐
- Oracle 12c数据库优化器统计信息收集的最佳实践
Oracle 12c数据库优化器统计信息收集的最佳实践 转载自 沃趣科技(ID:woqutech) 作者 刘金龙(译) 原文链接 http://www.oracle.com ...
- 性能优化——统计信息——SQLServer自动更新和自动创建统计信息选项
原文: 性能优化--统计信息--SQLServer自动更新和自动创建统计信息选项 原文译自:http://www.mssqltips.com/sqlservertip/2766/sql-server- ...
- SQL Server中的筛选后的统计信息和CE模型变化
In this blog post, we are going to view some interesting model variation, that I've found while expl ...
- execution 排除_使用SQL Server 2016 Live Execution统计信息对SQL查询性能进行故障排除
execution 排除 SQL Server Management Studio a graphical interactive that allows you to interact with t ...
- oracle ola_Ola HallengrenSQL Server维护解决方案–索引和统计信息维护
oracle ola This is the third article in Ola Hallengren's SQL Server Maintenance Solution series. The ...
- Oracle收集统计信息
Oracle收集统计信息 优化器统计范围: 表统计: --行数,块数,行平均长度:all_tables:NUM_ROWS,BLOCKS,AVG_ROW_LEN: 列统计: --列中唯一值的数量(NDV ...
- Oracle并发(CONCURREMT)收集统计信息 (文档 ID 1555451.1)
Oracle并发(CONCURREMT)收集统计信息 (文档 ID 1555451.1) 编辑手记:从11.2开始,可以通过CONCURRENT参数,启用表或分区的并行扫描,加快统计信息的收集速度. ...
- 详解Oracle统计信息
优化器统计范围: 表统计: --行数,块数,行平均长度:all_tables:NUM_ROWS,BLOCKS,AVG_ROW_LEN: 列统计: --列中唯一值的数量(NDV),NULL值的数量,数据 ...
- 收集oracle统计信息
原文地址为: 收集oracle统计信息 优化器统计范围: 表统计: --行数,块数,行平均长度:all_tables:NUM_ROWS,BLOCKS,AVG_ROW_LEN: 列统计: --列中唯一值 ...
最新文章
- NeurIPS 2019 获奖论文出炉,微软华人学者Lin Xiao 获经典论文奖
- network setup service启动后自动停止_一个简单的测试环境下的自动化部署方案
- boost::spirit模块实现罗马数字解析器(演示符号表)的测试程序
- Redis整合springboot实现哨兵模式
- dev gridview 打印列数过多_R语言:如何将多张统计图绘制在一张上面
- mac怎么查看gitlab的注册邮箱_163电子邮箱怎么注册申请?手机号注册电子邮箱的小技巧...
- 冯雪 手术机器人的应用_未来达芬奇手术机器人的应用将更为广阔
- uni-calendar更改打点颜色实现签到和缺勤不同打点颜色效果
- ElasticSearch 聚合查询
- solr 高亮springdatasolr
- 将Visual Studio更新到最新版本
- python 图形_Python切分图像小案例(1、3、2、4象限子图互换)
- Python之socketserver源码分析
- char与byte差异
- 联想y430完全拆机图解_视频深度拆解:联想IdeaPad Y430全揭秘
- 利用 0DAY 漏洞 CVE-2018-8174 获取windows系统 shell
- 技术栈(technology stack)
- opencv normalize()函数详解
- 链路追踪Zipkin
- 计算机网络原理IP计算总结