(4)统计数据
来源:互联网 发布:SQL未提交行1中的数据 编辑:程序博客网 时间:2024/06/07 00:05
统计数据可以分为两个层次:系统统计数据和对象统计数据。
1、系统统计数据
系统统计数据由dbms_stats.get_system_stats存储过程来收集。系统收集到的系统统计数据会被存储在系统数据字典aux_stats$中。
SQL> select * from aux_stats$ order by pname;SNAME PNAME PVAL1 PVAL2------------------------------ ------------------------------ ---------- ------------------------------SYSSTATS_MAIN CPUSPEED --CPU在负载模式下的处理速度。SYSSTATS_MAIN CPUSPEEDNW 1565.429 --CPU在无负载模式下的处理速度。SYSSTATS_INFO DSTART 01-25-2013 23:19SYSSTATS_INFO DSTOP 01-25-2013 23:19SYSSTATS_INFO FLAGS 0SYSSTATS_MAIN IOSEEKTIM 10 --IO寻址时间。SYSSTATS_MAIN IOTFRSPEED 4096 --IO传输速度。SYSSTATS_MAIN MAXTHR --IO系统的最大吞吐量。SYSSTATS_MAIN MBRC --系统设置多数据块读的数据块数。SYSSTATS_MAIN MREADTIM --多数据块读的平均读取时间。SYSSTATS_MAIN SLAVETHR --单个平行服务进程的最大吞吐量。SNAME PNAME PVAL1 PVAL2------------------------------ ------------------------------ ---------- ------------------------------SYSSTATS_MAIN SREADTIM --单数据块读的平均读取时间。SYSSTATS_INFO STATUS COMPLETED已选择13行。
2、对象统计数据
DBMS_STATS 包!
3、“待定”统计数据
11gr2开始,可以使用下面类型的操作来收集优化器统计信息:
1.自动发布收集的统计信息在收集操作结束以后(默认选项publish)
2.保存新的统计信息,并且待定(暂不发布pending)
这个特性可以将新收集的统计信息置为待定状态,所以可以先验证新统计信息的有效性然后再发布。可以使用下面的命令来查看是否默认发布新的统计信息。
SQL> select dbms_stats.get_prefs('publish') publish from dual;
PUBLISH
--------------------------------------------------
TRUE
返回为true或者false。True表示新的统计信息收集后即发布,也就是说优化器会使用新的统计信息来生查询计划,False表示收集的统计信息会被放入USER_TAB_PENDING_STATS和 USER_IND_PENDING_STATS,并且不会立刻被优化器使用,为待定状态。
可以使用下面的包来改变各个级别(global,schema,table)的默认publish选项。
Global
exec Dbms_stats.set_global_prefs(pname =>'PUBLISH' ,pvalue=> 'FALSE') ;
Schema
exec dbms_stats.set_schema_prefs(ownname => 'U1',pname=>'PUBLISH' ,pvalue => 'TRUE') ;
table
Exec dbms_stats.set_table_prefs('U1', 'T1','PUBLISH', 'false');
假设你执行了上面的关于table的操作,那么关于schema u1 上t1表的统计信息收集以后就不会立刻应用于优化器上面,而是先置于USER_TAB_PENDING_STATS表里面为待定状态。设置好默认的publish选项之后,就可以开始验证新统计信息了。
默认的优化器会使用已经发布的存放在数据字典里面的统计信息,可以通过更改初始化参数OPTIMIZER_USE_PENDING_STATISTICS来设定优化器使用哪一种类型的统计信息(published or pending),比如使用下面的操作来更改session级别的优化器统计信息来源(不要写成alter system了)。
alter session set optimizer_use_pending_statistics = TRUE;
这样在session级别内就可以使用待定的统计信息来编译sql语句并且生成查询计划,如果新的统计信息已经被验证,那么可以使用下面的语句发布统计信息。
Execdbms_stats.publish_pending_stats('DEXTER','PUBLISH_TEST');
如果不想使用新的统计信息,那么可以使用下面的语句去删除。
Execdbms_stats.delete_pending_stats('DEXTER','PUBLISH_TEST');
- (4)统计数据
- 统计数据
- 统计数据
- 统计数据的思考(上)
- 第14周项目1-小玩文件(4)键盘输入文件名统计数据
- R统计笔记(一):获取统计数据
- MongoDB aggregate做统计数据(group进阶)。
- 统计数据后生成报表(急!!!在线等)
- 统计数据及其披露的管理思路(1)-现状分析
- 最新统计数据
- 淘宝统计数据
- hibernate 统计数据
- 按月统计数据
- 分组统计数据
- 网站统计数据
- 移动统计数据
- sql统计数据
- CP How-To:如何使用cPanel查看站点统计数据(awstats)
- Linux strip命令的用法
- create a profile from hint
- 在 WordPress 中加载 JavaScript 最好使用 wp_enqueue_script() 函数以减少问题提高效率
- LINK fatal error LNK1104 无法打开文件
- Errors running builder 'DeploymentBuilder' on project ' 解决方法
- (4)统计数据
- ruby的 ||= , && , || 等运算符的理解。
- js多级树形弹出一个小窗口层,非常好用
- CodeIgniter core/lang.php
- mysql查询今天,昨天,近7天,近30天,本月,上一月数据的方法
- oracle重启与关闭
- 参考文章
- 清空ArrayList数组的值
- C++对象内存分布