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%'));
相关推荐
BruceGerGer11 天前
flutter开发实战-flutter web加载html及HtmlElementView的使用
flutter·1024程序员节
网络冒险家2 个月前
【软考】系统集成项目管理工程师【第二版】
职场和发展·软考·集成学习·1024程序员节·系统集成项目工程师
BruceGerGer2 个月前
flutter开发实战-AssetBundle读取指定packagename的文件
flutter·1024程序员节
sheng12345678rui2 个月前
最新缺失msvcp140.dll的多种解决方法,有效解决电脑dll问题
windows·microsoft·电脑·dll文件·1024程序员节
a5553338202 个月前
电脑显示mfc140u.dll丢失的修复方法,总结7种有效的方法
java·经验分享·dll·dll文件丢失·1024程序员节
行十万里人生2 个月前
C++ 智能指针
linux·c++·git·阿里云·容器·蓝桥杯·1024程序员节
a5553338202 个月前
启动鸣潮提示错误代码126:加载d3dcompiler_43.dll错误或缺失的7个解决方法
前端·经验分享·dll·dll文件丢失·1024程序员节
BruceGerGer2 个月前
flutter开发实战-Webview及dispose关闭背景音
flutter·1024程序员节
BruceGerGer3 个月前
flutter开发实战-ListWheelScrollView与自定义TimePicker时间选择器
flutter·1024程序员节
askah66443 个月前
电脑提示msvcr120.dll丢失怎样修复
经验分享·microsoft·dll修复·dll丢失·1024程序员节