【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统计表,列,索引的统计信息(默认参数下是对表进行直方图信 ...
随机推荐
- 在Unity中客户端与服务器端的2种通信方式(Socker)
15:17 2019/5/10 //第一种 using UnityEngine; using System.Collections; //引入库 using System.Net; using Sys ...
- Selenium3+python自动化 单选框和复选框
一.认识单选框和复选框 1.先认清楚单选框和复选框长什么样 2.各位小伙伴看清楚哦,上面的单选框是圆的:下图复选框是方的,这个是业界的标准,要是开发小伙伴把图标弄错了,可以先抽他了. 二.radio和 ...
- windows开机自启动bat脚本设置
群里有朋友问到windows下如何设计开机自启动的脚本,一般而言小鱼大多还是在linux环境下运维,windows的bat了解的很少,windows运行机制也不是特别了解,不过既然朋友问到这个问题,虽 ...
- [frontend] 根据文字长度 自适应宽度 自适应高度+ Uncaught ReferenceError: xxx is not defined at HTMLDivElement.onclick
CSS一行代码就可以解决第一个问题: 1.1 根据文字长度,自适应标签宽度 解决方法:把width的设置删掉,加一行代码 display:table; .tag-footdetail{ /*widt ...
- GDI 画刷(10)
创建画刷 调用 CreateSoildBrush.CreateHatchBrush.CreateBrushIndirect 函数可以创建画刷. CreateSoildBrush:创建实心画刷: Cre ...
- 七夕心形demo
from turtle import * pensize(1) pencolor('red') fillcolor('pink') speed(5) up() goto(-30, 100) down( ...
- elementUI 图片上传限制上传图片的宽高
文件上传,需当上传的文件类型为图片的时候,需要限制图片的宽高. 此处采用了new Promise异步加载的方式,等图片上传加载完成后, 页面代码: <el-form-item label=&qu ...
- _markupbase.py if not match: UnboundLocalError: local variable 'match' referenced before assignment,分析Python 库 html.parser 中存在的一个解析BUG
BUG触发时的完整报错内容(本地无关路径用已经用 **** 隐去): **************\lib\site-packages\bs4\builder\_htmlparser.py:78: U ...
- Windows 安装react native
1.下载node.js (https://nodejs.org/en/) 2.安装node.js,安装完成后按住 图标键+R ,输入CMD进入命令行终端,输入npm -v C:\Users\Admin ...
- WEB测试范围小结
根据<用户需求说明手册>和<需求分析说明书>,分析各个功能模块.针对各个功能模块进行相关功能的测试. 链接测试 链接是Web 网站的一个主要特征,它是在页面之间切换和引导用户去 ...