oracle统计信息

1. 查看表的统计信息

bash 复制代码
1.建表
SQL> create table test as select * from dba_objects;

2.查看表的统计信息
select owner, table_name, num_rows, blocks, avg_row_len
  from dba_tables
 where owner = 'SCOTT'
   and table_name = 'TEST';
OWNER			       TABLE_NAME			NUM_ROWS     BLOCKS AVG_ROW_LEN
------------------------------ ------------------------------ ---------- ---------- -----------
SCOTT			       TEST

3. 收集统计信息
BEGIN
  DBMS_STATS.GATHER_TABLE_STATS(
     ownname => 'SCOTT',
 tabname => 'TEST',
 estimate_percent => 100,
 method_opt   => 'for all columns size auto',
 degree => 30,
 cascade => TRUE);
  END;
 /
 

4.再次查看统计信息
select owner, table_name, num_rows, blocks, avg_row_len
  from dba_tables
 where owner = 'SCOTT'
      and table_name = 'TEST';

OWNER			       TABLE_NAME			NUM_ROWS     BLOCKS AVG_ROW_LEN
------------------------------ ------------------------------ ---------- ---------- -----------
SCOTT			       TEST				   86262       1260	     98


5. 查看test表的直方图
select sta.column_name,
       sta.num_distinct,
       sta.num_nulls,
       sta.num_buckets,
       sta.HISTOGRAM
  from dba_tab_col_statistics sta
 where sta.owner = 'SCOTT'
   and sta.table_name = 'TEST'



6.查看表和列的统计信息
select sta.column_name,
       tab.num_rows,
       sta.num_nulls,
       sta.num_distinct cardinality,
       round(sta.num_distinct / tab.num_rows * 100, 2) selectivity,
       sta.HISTOGRAM,
       sta.num_buckets
  from dba_tab_col_statistics sta, dba_tables tab
 where sta.owner = tab.owner
   and sta.table_name = tab.table_name
   and sta.owner = 'SCOTT'
   and sta.table_name = 'TEST';

estimate_percent:采样率,0.0000001~100,一般设置为30

degree :设置cpu负载

method_opt :直方图收集策略(for all columns size 1:所有列不收集,for all columns size skewonly:对所有列自动判断是否收集,for all columns size auto:对出现在where条件中的列自动判断是否收集,for all columns size repeat:当前哪些列收集统计信息,还对那些列收集)

2.查看索引的统计信息

bash 复制代码
1.创建索引(会自动收集统计信息)
SQL> create index idx_id on test(object_id);

2.查看索引统计信息
select idx.blevel, idx.leaf_blocks, idx.clustering_factor, idx.status
  from dba_indexes idx
 where idx.index_name = 'IDX_ID';

    BLEVEL LEAF_BLOCKS CLUSTERING_FACTOR STATUS
---------- ----------- ----------------- --------
	 1	   191		    1304 VALID

3. 单独对索引收集统计信息
begin
  dbms_stats.gather_index_stats( 
  ownname => 'SCOTT',
  indname => 'IDX_ID');
 end;
/ 

3.查看统计信息状态

bash 复制代码
1.查看统计信息是否过期
select s.owner, s.table_name, s.object_type, s.stale_stats, s.last_analyzed
  from dba_tab_statistics s
 where s.owner = 'SCOTT'
   AND S.table_name = 'EMP';
PS:stale_stats为yes表示统计信息过期
   

2.查看统计信息过期原因
select alm.table_owner,
       alm.table_name,
       alm.inserts,
       alm.updates,
       alm.deletes,
       alm.timestamp
  from all_tab_modifications alm
 where alm.table_owner = 'SCOTT'
   and alm.table_name = 'TEST';
PS:当表中有10%的数据发生改变,就会引起统计信息过期


3.检查表统计信息过期sql
select owner, table_name, object_type, stale_stats, last_analyzed
  from dba_tab_statistics
 where (owner, table_name) in
       (select object_owner, object_name
          from plan_table
         where object_type like '%TABLE%'
        union
        select idx.table_owner, idx.table_name
          from dba_indexes idx
         where (idx.owner, idx.table_name) in
               (select plt.object_owner, plt.object_name
                  from plan_table plt
                 where plt.object_type = '%INDEX%'))



4.统计过期原因
select *
  from all_tab_modifications
 where (table_owner, table_name) in
       (select object_owner, object_name
          from plan_table
         where object_type like '%TABLE%'
        union
        select table_owner, table_name
          from dba_indexes
         where (owner, index_name) in
               (select object_owner, object_name
                  from plan_table
                 where object_type like '%INDEX%'));
相关推荐
希忘auto2 天前
详解Redis的常用命令
redis·1024程序员节
yaosheng_VALVE2 天前
探究全金属硬密封蝶阀的奥秘-耀圣控制
运维·eclipse·自动化·pyqt·1024程序员节
dami_king2 天前
SSH特性|组成|SSH是什么?
运维·ssh·1024程序员节
一个通信老学姐7 天前
专业125+总分400+南京理工大学818考研经验南理工电子信息与通信工程,真题,大纲,参考书。
考研·信息与通信·信号处理·1024程序员节
sheng12345678rui7 天前
mfc140.dll文件缺失的修复方法分享,全面分析mfc140.dll的几种解决方法
游戏·电脑·dll文件·dll修复工具·1024程序员节
huipeng9268 天前
第十章 类和对象(二)
java·开发语言·学习·1024程序员节
earthzhang20218 天前
《深入浅出HTTPS》读书笔记(19):密钥
开发语言·网络协议·算法·https·1024程序员节
爱吃生蚝的于勒9 天前
计算机基础 原码反码补码问题
经验分享·笔记·计算机网络·其他·1024程序员节
earthzhang20219 天前
《深入浅出HTTPS》读书笔记(20):口令和PEB算法
开发语言·网络协议·算法·https·1024程序员节
一个通信老学姐10 天前
专业140+总分410+浙江大学842信号系统与数字电路考研经验浙大电子信息与通信工程,真题,大纲,参考书。
考研·信息与通信·信号处理·1024程序员节