



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
如何收集统计信息dbms_stats.gather_table_stats与analyze table 的区别转贴 - 参考 /viewthread.php?tid=845777&extra=&page=1Analyze StatementThe ANALYZE statement can be used to gather statistics for a specific table, index or cluster. The statistics can be computed exactly, or estimated based on a specific number of rows, or a percentage of rows:ANALYZE TABLE employees COMPUTE STATISTICS;ANALYZE INDEX employees_pk COMPUTE STATISTICS;ANALYZE TABLE employees ESTIMATE STATISTICS SAMPLE 100 ROWS;ANALYZE TABLE employees ESTIMATE STATISTICS SAMPLE 15 PERCENT;DBMS_UTILITYThe DBMS_UTILITY package can be used to gather statistics for a whole schema or database. Both methods follow the same format as the analyze statement:EXEC DBMS_UTILITY.analyze_schema(SCOTT,COMPUTE);EXEC DBMS_UTILITY.analyze_schema(SCOTT,ESTIMATE, estimate_rows = 100);EXEC DBMS_UTILITY.analyze_schema(SCOTT,ESTIMATE, estimate_percent = 15);EXEC DBMS_UTILITY.analyze_database(COMPUTE);EXEC DBMS_UTILITY.analyze_database(ESTIMATE, estimate_rows = 100);EXEC DBMS_UTILITY.analyze_database(ESTIMATE, estimate_percent = 15);DBMS_STATSThe DBMS_STATS package was introduced in Oracle 8i and is Oracles preferred method of gathering object statistics. Oracle list a number of benefits to using it including parallel execution, long term storage of statistics and transfer of statistics between servers. Once again, it follows a similar format to the other methods:EXEC DBMS_STATS.gather_database_stats;EXEC DBMS_STATS.gather_database_stats(estimate_percent = 15);EXEC DBMS_STATS.gather_schema_stats(SCOTT);EXEC DBMS_STATS.gather_schema_stats(SCOTT, estimate_percent = 15);EXEC DBMS_STATS.gather_table_stats(SCOTT, EMPLOYEES);EXEC DBMS_STATS.gather_table_stats(SCOTT, EMPLOYEES, estimate_percent = 15);EXEC DBMS_STATS.gather_index_stats(SCOTT, EMPLOYEES_PK);EXEC DBMS_STATS.gather_index_stats(SCOTT, EMPLOYEES_PK, estimate_percent = 15);This package also gives you the ability to delete statistics:EXEC DBMS_STATS.delete_database_stats;EXEC DBMS_STATS.delete_schema_stats(SCOTT);EXEC DBMS_STATS.delete_table_stats(SCOTT, EMPLOYEES);EXEC DBMS_STATS.delete_index_stats(SCOTT, EMPLOYEES_PK);-自从Oracle8.1.5引入dbms_stats包,Experts们便推荐使用dbms_stats取代analyze。 理由如下dbms_stats可以并行分析dbms_stats有自动分析的功能(alter table monitor )analyze 分析统计信息的不准确some times1,2好理解,且第2点实际上在VLDB中是最吸引人的;3以前比较模糊,看了metalink236935.1 解释,analyze在分析Partition表的时候,有时候会计算出不准确的Global statistics .原因是,dbms_stats会实在的去分析表全局统计信息(当指定参数);而analyze是将表分区(局部)的statistics 汇总计算成表全局statistics ,可能导致误差。如果想分析整个用户或数据库,还可以采用工具包,可以并行分析Dbms_utility(8i以前的工具包)Dbms_stats(8i以后提供的工具包)如dbms_stats.gather_schema_stats(User,estimate_percent=100,cascade= TRUE);dbms_stats.gather_table_stats(User,TableName,degree = 4,cascade = true);这是对命令与工具包的一些总结1、对于分区表,建议使用DBMS_STATS,而不是使用Analyze语句。a) 可以并行进行,对多个用户,多个Tableb) 可以得到整个分区表的数据和单个分区的数据。c) 可以在不同级别上Compute Statistics:单个分区,子分区,全表,所有分区d) 可以倒出统计信息e) 可以用户自动收集统计信息2、DBMS_STATS的缺点a) 不能Validate Structureb) 不能收集CHAINED ROWS, 不能收集CLUSTER TABLE的信息,这两个仍旧需要使用Analyze语句。c) DBMS_STATS 默认不对索引进行Analyze,因为默认Cascade是False,需要手工指定为True3、对于oracle 9里面的External Table,Analyze不能使用,只能使用DBMS_STATS来收集信息。-10G的文档是这么说的:Do not use the COMPUTE and ESTIMATE clauses of ANALYZE to collect optimizer statistics. These clauses are supported for backward compatibility. Instead, use the DBMS_STATS package, which lets you collect statistics in parallel, collect global statistics for partitioned objects, and fine tune your statistics collection in other ways. The cost-based optimizer, which depends upon statistics, will eventually use only statistics that have been collected by DBMS_STATSanalyze的功能已经明确:Use the ANALYZE statement (rather than DBMS_STATS) forstatistics collection not related to the cost-based optimizer:To use the VALIDATE or LIST CHAINED ROWS clausesTo collect information on freelist blocks在收集与CBO优化器不相关的统计信息的时候ANALYZE语句要优于DBMS_STATS包-EX:beginfor owner in (select username from dba_users where username not in (SYS,SYSTEM)loopdbms_output.disable;dbms_output.enable(1000000);dbms_output.put_line(Schema: |owner.username);select sysdate into start_time from dual;dbms_output.put_line(Analyze start from : |start_time);dbms_stats.gather_schema_stats(ownname = owner.username, estimate_percent = 20, block_sample= true, cascade=true);select sysdate into end_time from dual;dbms_output.put_line(Analyze complete at : |end_time);dbms_output.put_line(-);end loop;dbms_st
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 藏品展示服务合同
- 职位申请书格式
- 行业展览合作协议
- 企业培训课程设置及评估工具
- 项目团队效率监控数据记录模板
- 2025年中国核雕微刻师(0.5mm以下)认证考试专项练习含答案
- 城市运行客服中心招聘面试经典题及答案
- 设计行业创意与价格对比表
- 大数据分析平台服务协议
- 农村种植业合作经营协议
- 2025年郑州银行招聘考试(行政能力测验)历年参考题库含答案详解(5套)
- 园艺生物技术应用与发展
- 子痫患者护理查房
- 2025上海市八年级升九年级数学暑假提升讲义:相似三角形压轴题(六大题型)原卷版
- 2025年工业互联网工程技术人员考核试题题库及答案
- 农行OCRM系统讲解
- 医疗护理员职业技能竞赛试题及答案
- 2025年高端美食主题餐厅餐饮服务整体外包合同
- 体育课培训课件
- 工贸安全员考试题库及答案大全
- 2025年云南pcr上岗证考试题及答案
评论
0/150
提交评论