分类 Tuning 中的文章

12.2统计信息之管理统计信息

除了收集合适的统计信息,提供一个管理这些统计信息的综合架构同样重要。oracle提供了多个方法去做这些工作,包括恢复统计信息到以前的版本,提供从一个系统迁移统计信息到另外一个的选项,甚至你可以手动设置统计信息。这些选项在某些特定情形下都非常有用,但是仍然建议都通过DBMS_STATS包来收集统计信息。 恢复统计信息 当你用DBMS_STATS包来收集统计信息时,……

阅读全文

12.2统计信息之分区表

分区表上的统计信息要同时计算表级别和分区级别,11g以前新增一个分区或者修改少数分区的数据需要扫描整张表去刷新表的统计信息。如果跳过收集全局统计信息,那么优化器则会根据分区级别的统计信息去推断全局级别的统计信息。这种方法对于简单的表统计信息(例如行数)是准确的——通过聚合所有分区的行数,但是其他的统计信息就无法准确的推断。比如无法从每个分区独立的信息来准确推……

阅读全文

12.2统计信息之扩展统计信息

从11g开始引入了对列收集扩展统计信息,扩展统计信息包含了两种额外类型的统计信息:组合列和表达式统计信息。 组合列 对于真实数据来说,一个表中多个字段直接的数据通常具有关联性。比如在CUSTOMERS表中,CUST_STATE_PROVINCE字段会受到COUNTRY_ID字段值的影响,比如湖北只会出现在中国下面,如果只有基本的统计信息,优化器是没有办法知道这些……

阅读全文

12.2统计信息之直方图

介绍 很早之前的版本中,如何执行一个sql语句是由RBO(Rule Based Optimizer)决定的,根据一些设定好的规则来生成执行计划。 后来的版本中CBO(Cost Based Optimizer)被引入进来。CBO检查sql所有可能的执行计划然后选择其中cost最低的一个,cost其实就是反应了执行计划估算的资源消耗。cost越低,这个执行计划也就被认为效率越高。为了能让C……

阅读全文

12c Adaptive Statistics

之前写过一篇12c Adaptive Plans,现在来说一下Adaptive Query Optimization的另外一部分:Adaptive Statistics sql执行的计划的好坏很大程度上取决于统计信息的质量,现在的sql语句越来越复杂,单纯的依赖单独某个表的统计信息已经无法满足要求,为了使统计信息更加丰富完善,引入了新的帮手Adaptive Statistics Dynamic Statistics 在一个sql语句编译的过程中,优化器会判断现有的……

阅读全文

12c Adaptive Plans

12c在优化器方面引入了不少的新特性,其中一个就是Adaptive Plans。 在特定的条件下优化器会使用这个新特性,比如sql语句包含了表关联、复杂的谓词条件导致很难精准的估算cardinality,Adaptive Plans使优化器可以等到真正在执行sql语句的时候才决定采用哪种执行计划。 优化器会优先选择一个默认执行计划,同时搭配一个_statistics……

阅读全文

parallel不起作用

有时候在执行sql的时候,为了加快执行的速度,可能会采取并发的方式去执行。为了减少影响,通常都是通过加parallel hint或者alter session force parallel QUERY parallel;但是可能sql并未按照预期的那样去进行并发处理 11.2.0.4 SYS@xb> create table t as select * from dba_objects; Table created. SYS@xb> create index idx_id on t(owner); Index created. SYS@xb> exec dbms_stats.gather_table_stats(user,'T',method_opt=>'for all columns size 1',cascade=>true); PL/SQL procedure successfully completed. 加上并发hint SYS@xb> select /*+ parallel(t 4)*/ count(*) from t where owner like 'S%'; COUNT(*) ---------- 41973 SYS@xb> select * from table(dbms_xplan.display_cursor(null,null,'ALLSTATS LAST +PEEKED_BINDS +PARALLEL +PARTITION +COST +BYTES')); PLAN_TABLE_OUTPUT ---------------------------------------------------------------------------------------------------- SQL_ID 6va6j0s526fc1, child number 0 ------------------------------------- select……

阅读全文