【Oracle】DBMS_STATS.GATHER_TABLE_STATS分析表
表分析,简单的说,就是收集表和索引的信息,CBO根据这些信息决定SQL最佳的执行路径。通过对表的分析,可以产生一些统计信息,通过这些信息oracle的优化程序可以进行优化。
语法:
DBMS_STATS.GATHER_TABLE_STATS (
ownname VARCHAR2,
tabname VARCHAR2,
partname VARCHAR2,
estimate_percent NUMBER,
block_sample BOOLEAN,
method_opt VARCHAR2,
degree NUMBER,
granularity VARCHAR2,
cascade BOOLEAN,
stattab VARCHAR2,
statid VARCHAR2,
statown VARCHAR2,
no_invalidate BOOLEAN,
force BOOLEAN
);
列含义:
ownname #要分析表的拥有者
tabname #要分析表的表名
partname #分区的名字,只对分区表或者分区索引有用,默认为:null
estimate_percent#采样行的百分比,取值范围[0.000001,100],null是全部分析不采样,常量:DBMS_STATS.AUTO_SAMPLE_SIZE是默认值,由oracle决定最佳取采样值.
block_sample #是否用块采样代替行采样,默认为false
method_opt #method_opt:决定histograms信息是怎样被统计的,统计指定列的直方图时建议使用SKEWONLY
method_opt的取值如下:
for all columns:统计所有列的histograms.
for all indexed columns:统计所有indexed列的histograms.
for all hidden columns:统计你看不到列的histograms
for columns SIZE | REPEAT | AUTO | SKEWONLY
SKEWONLY:统计指定列的histograms.N的取值范围[1,254]
REPEAT上次统计过的histograms
AUTO由oracle决定N的大小
degree #决定并行度,默认为null
granularity #设置分区表收集统计信息的粒度 granularity取值:
all:对表达分区,分区,子分区的数据都做分析
auto:Oracle根据分区的类型,自行决定做哪一种粒 度的分析
global:只做全局级别非分析
global and partition:只对全局和分区级别做分析,对子分区不做分析,这是和all的一个区别
partition:只对分区级别做分析
subpartition:只对子分区做分析
cascade #是收集索引的信息.默认为falase
stattab #指定要存储统计信息的表,
statid #对存储在同一个stattab中的表的统计信息做区分
statown #存储统计信息 表的拥有者
no_invalidate #true:当收集完统计信息后,收集对象的cursor不会失效(不会产生新的执行计划,子游标);
false:当收集完统计信息后,收集对象的cursor会立即失效(新的执行计划,新的子游标)
force #即使表锁定了也收集统计信息
统计信息导入导出:
1:创建测试表
SYS@GOOD> create table t as select * from all_objects;
Table created.
2.对表进行分析
SYS@GOOD> BEGIN
2 dbms_stats.gather_table_stats(ownname=>'SYS',tabname=>'T');
3 END;
4 /
PL/SQL procedure successfully completed.
3.创建表,存放统计信息
SYS@GOOD> BEGIN
2 dbms_stats.create_stat_table(ownname=>'SCOTT',stattab=>'STAT_TABLE');
3 END;
4 /
PL/SQL procedure successfully completed.
4.导出统计信息到stat_table表中
SYS@GOOD> begin
2 dbms_stats.export_table_stats(ownname=>'SYS',tabname=>'T',statown=>'SCOTT',stattab=>'STAT_TABLE');
3 end;
4 /
PL/SQL procedure successfully completed.
5.删除统计信息
SYS@GOOD> begin
2 dbms_stats.delete_table_stats(ownname=>'SYS',tabname=>'T');
3 end;
4 /
PL/SQL procedure successfully completed.
6.导入统计信息
SYS@GOOD> begin
2 dbms_stats.import_table_stats(ownname=>'SYS',tabname=>'T',statown=>'SCOTT',stattab=>'STAT_TABLE');
3 end;
4 /
PL/SQL procedure successfully completed.
7.验证
SYS@GOOD> SELECT num_rows,blocks,empty_blocks as empty, avg_space, chain_cnt, avg_row_len FROM dba_tables WHERE owner = 'SYS'
2 AND table_name = 'T';
NUM_ROWS BLOCKS EMPTY AVG_SPACE CHAIN_CNT AVG_ROW_LEN
---------- ---------- ---------- ---------- ---------- -----------
85265 1216 0 0 0 98
【Oracle】DBMS_STATS.GATHER_TABLE_STATS分析表的更多相关文章
- Oracle:DBMS_STATS.GATHER_TABLE_STATS的语法
转自: http://cjjwzs.iteye.com/blog/1143893 作用:DBMS_STATS.GATHER_TABLE_STATS统计表,列,索引的统计信息. DBMS_STATS.G ...
- Oracle基础之分析表
analyze table tablename compute statistics; analyze index indexname compute statistics; (analyze 不会重 ...
- 【Oracle】DBMS_STATS.GATHER_TABLE_STATS详解
由于Oracle的优化器是CBO,所以对象的统计数据对执行计划的生成至关重要! 作用:DBMS_STATS.GATHER_TABLE_STATS统计表,列,索引的统计信息(默认参数下是对表进行直 ...
- 【Oracle】DBMS_STATS.GATHER_TABLE_STATS
月初一直在忙保监会报送的事情,苦逼的保险行业的ETL大家都懂的.今天闲来无事查看了一下前阵子的报送存储过程,发现系统隔一段时间就会调用一次DBMS_STATS.GATHER_TABLE_STATS,所 ...
- 在Oracle 11.2.0.1.0下dbms_stats.gather_table_stats收集直方图不准
SQL> select * from v$version; BANNER ------------------------------------------------------------ ...
- 【转】DBMS_STATS.GATHER_TABLE_STATS详解
转自http://blog.itpub.net/26892340/viewspace-721935/ [作用] DBMS_STATS.GATHER_TABLE_STATS统计表,列,索引的统计信息(默 ...
- 【转】DBMS_STATS.GATHER_TABLE_STATS详解 2012-04-22 09:20:10
[转]DBMS_STATS.GATHER_TABLE_STATS详解 2012-04-22 09:20:10 分类: Linux 由于Oracle的优化器是CBO,所以对象的统计数据对执行计划的生成至 ...
- dbms_stats.gather_table_stats与analyze table 的区别[转贴]
Analyze StatementThe ANALYZE statement can be used to gather statistics for a specific table, index ...
- DBMS_STATS.GATHER_TABLE_STATS
由于Oracle的优化器是CBO,所以对象的统计数据对执行计划的生成至关重要! 作用:DBMS_STATS.GATHER_TABLE_STATS统计表,列,索引的统计信息(默认参数下是对表进行直方图信 ...
随机推荐
- Linux文件压缩命令笔记
1.gzip/gunzip gzip/gunzip:主要是进行单个文件的压缩和解压缩的命令. 示例:gzip hello.txt #执行压缩hello.txt ls hello.txt.gz #查看文 ...
- Python Shell 中敲击方向键显示「^[[C^[[D」,原因是什么?如何修复?
[root@hk45-node02-47 ahao.mah]# yum -y install readline-devel
- HDU1850 - Being a Good Boy in Spring Festival 【尼姆博弈】
一年在外 父母时刻牵挂 春节回家 你能做几天好孩子吗 寒假里尝试做做下面的事情吧 陪妈妈逛一次菜场 悄悄给爸爸买个小礼物 主动地 强烈地 要求洗一次碗 某一天早起 给爸妈用心地做回早餐 ...
- Linux系统学习之 三:新手必须掌握的Linux命令3
内容预览 1.输入输出重定向 2.管道命令符 3.命令行的通配符 4.常用的转义符号 5.重要的环境变量 一.输入输出重定向 重定向技术的5种模式:1 标准覆盖输出重定向 错误覆盖输出重定向 错误追加 ...
- Golang - 爬虫案例实践
目录 Golang - 爬虫案例实践 1. 爬虫步骤 2. 正则表达式 3. 并发爬取美图 Golang - 爬虫案例实践 1. 爬虫步骤 明确目标(确定在哪个网址搜索) 爬(爬下数据) 取(去掉没用 ...
- GOF23设计模式之原型模式
GOF23设计模式之原型模式 1)通过 new 产生一个对象需要飞船繁琐的数据准备或访问权限,则可以使用原型模式. 2)就算 java 中的克隆技术,以某个对象为原型,复制出新的对象.显然,新的对象具 ...
- nyoj 711 枚举+并查集
#include<stdio.h>//从大到小不断枚举边直到找到s-t的路径,判断从s可以到t可以用并查集来判断 #include<stdlib.h>//枚举最大的一条边肯定 ...
- 百度之星2014资格赛 1004 - Labyrinth
先上题目: Labyrinth Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
- 南洋理工大学 ACM 在线评测系统 矩形嵌套
矩形嵌套 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a& ...
- C语言可变參实现參数累加返回
C语言可变參的作用真的是很大,自从发表了可变參怎样实现printf.fprintf,sprintf的文章以来.便有不少博友私信问我实现的机制,我也解释了相关的知识点.今天,我们借着这个机会,再来举一个 ...