码迷,mamicode.com
首页 > 数据库 > 详细

oracle统计信息

时间:2018-06-10 18:31:59      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:需要   tst   family   padding   stripe   any   mat   overflow   view   

oracle统计信息

基础

统计信息相关

1.哪种优化器模式需要统计信息收集,ALL_ROWS

目前O3建议无论模式都进行统计信息收集,部分查询采取的是all_rows模式

--查看当前数据库CBO优化方式,默认all_rows方式CBO
show parameter optimizer_mode;  
--修改优化器模式
alter system set optimizer_mode=all_rows scope=both;

2.查询用户统计信息收集情况

# sql
select last_analyzed,table_name,owner,num_rows,sample_size from dba_tables where owner=‘SCOTT‘;

查询结果

字段名 对应
LAST_ANALYZED 上次时间
TABLE_NAME 表名
OWNER 用户
NUM_ROWS 当前条数
SAMPLE_SIZE 统计信息条数

3.什么是手工收集

使用DBMS_STATS包手工收集统计数据,其实自动收集的gather_stats_job作业本质上也是使用包来实现收集的,区别看是否是oralce自动执行的内部行为。

dbms_stats包提供几种过程来统计不同粒度的数据,分为统计数据库,模式,表以及索引

解释
gather_database_statistics 为全库表的表统计数据
gather_schema_statistics 为某个模式统计数据
gather_table_statistics 为某个特定的表收集统计数据
gather_index_statistics 为某个索引表统计数据

统计数据会存储在***dba_tab_statistics*** 和 ***dba_tab_col_statistics***数据字典中

手工收集举例

  1. 为模式trade的所有表统计数据
  1. exec dbms_stats.gather_schema_stats(ownname => ‘TRADE‘); 
  1. 为TRADE下面的表tstockinfo统计数据
  1. exec dbms_stats.gather_table_stats( ‘TRADE‘,‘tstockinfo‘); 
  1. dept的索引统计数据
  1. select index_name,table_name from dba_indexes where owner =‘SCOTT‘
  2. exec dbms_stats.gather_index_stats(‘SCOTT‘,‘PK_DEPT‘); 

注:

  1. show parameter job_queue_processes; 
  2. --如果该参数为0,则统计信息包不会工作, 
  3. --需要设置参数 
  4. alter system set job_queue_processes=20 scope=both

手工收集整个数据库统计信息

  1. begin 
  2. dbms_stats.gather_database_stats(estimate_percent=>null); 
  3. edn; 










oracle统计信息

标签:需要   tst   family   padding   stripe   any   mat   overflow   view   

原文地址:https://www.cnblogs.com/andymdcc/p/9163791.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!