oracle 表分析(如何在ORACLE系统中对表进行统计分析)

2024-07-19 07:56:34 21

oracle 表分析(如何在ORACLE系统中对表进行统计分析)

本文目录

如何在ORACLE系统中对表进行统计分析

begindbms_stats.gather_table_stats( ownname=》’XXXX’,tabname =》 ’XXXX’ ,ESTIMATE_PERCENT=》100,degree=》8, CASCADE=》true); end;

oracle如何判断需要做表分析

首先要了解为什么要进行表分析,表分析的结果被Oracle用于基于成本的优化生成更好的查询计划。所以,一般发现如有个表的查询性能比较差,或者原本有索引但是没有走,那就可以考虑对表进行分析。

oracle 是否可以同时进行多个表分析

可以并行分析

dbms_stats可以统计数据(尤其是针对较大的分区表),并能获得更好的统计结果,最终制定出速度更快的SQL执行计划。

下边是一个例子:

exec dbms_stats.gather_schema_stats( -ownname =》 ’SCOTT’, -options =》 ’GATHER AUTO’, -estimate_percent =》 dbms_stats.auto_sample_size,-method_opt =》 ’for all columns size repeat’, -degree =》 15 -)

其中,degree参数用于指定统计收集的并行度

Oracle推荐设置DBMS_STATS的DEGREE参数为DBMS_STATS.AUTO_DEGREE,该参数允许Oracle根据对象的大小和并行性初始化参数的设置选择恰当的并行度。聚簇索引,域索引,位图连接索引不能并行收集。

Oracle的表分析是做什么的

分析的结果被Oracle用于基于成本的优化生成更好的查询计划。那么,问题在于:Oracle的表分析需要经常进行吗?还是只要跑一回就可以一直有效了?答:遇到当前表的查询或其他性能不好时,就可以对相应的表进行一次分析。1。经常对表做dml就需要分析,现在推荐使用dbms_stats包。

Oracle数据库表做表分析、索引分析的命令是什么

analyze table 表名 compute statisticsanalyze index 索引ID compute statistics如果想分析所有的表名和index名可以从视图user_tables,user_indexes取得相关的信息,自动生成SQL命令

如何正确地分析Oracle数据库模式,表及索引

在Oracle 数据库中,我们经常需要去手工分析表和索引,还有某个模式下所有的表和索引等等。oracle 提供了两种分析方法,分别是dbms_stats 包和analyze 命令。这些是我们在日常项目管理中的真实使用的方法,供参考。在10g 中分析某一个用户下所有的对象,如user_miki 用户Sql代码 收藏代码sys.dbms_stats.gather_schema_stats(ownname =》 ’user_miki’,estimate_percent =》 30,method_opt =》 ’FOR ALL INDEXED COLUMNS SIZE AUTO’,cascade =》 true,options =》 ’GATHER’);这是我在项目中分析一个用户所有对象的分析方法,取样比例为30% ,分析所有索引字段,生成柱形图,并且也分析索引。***隐藏网址***在10g 中分析某一个用户下某一个表及其索引,如user_miki 用户下info 表和它的索引Sql代码 收藏代码execute dbms_stats.gather_table_stats(ownname =》 ’user_miki’,tabname =》 ’info’,estimate_percent =》 30,method_opt =》 ’for all indexed columns size auto’);这是我在项目中单独分析一个用户中一张表的分析方法,取样比例为30% ,分析所有索引字段,生成柱形图,并且也分析索引。我们在google 时,还能看到使用analzye 命令分析表的方法。Sql代码 收藏代码analyze table table_name compute statistics;这个会将索引和表一起分析;Sql代码 收藏代码analyze table table_name compute statistics for table;这个仅分析表;analyze table table_name compute statistics for all columns;这个仅分析表,和上面所有的字段,生成柱形图analyze table table_name compute statistics for all indexed columns;这个仅分析表,和上面所有建立索引的字段,生成柱形图在9i 中,我们常常使用analyze 方法,在10g 以后,就改为dbms_stats.gather_schema_stats 类似的包来分析数据库对象了。10g 的分析函数包比9i 的analyze 方法更灵活一些。在10g 中,会有个系统的计划任务,每天10 点和周末两天都自动分析新的数据库对象和它认为统计信息已经过期的数据库对象。这个分析结果有时候不靠谱。因此,我都采用10g 中提供的dbms_stats.gather_schema_stats 方法作为补充,设置一个计划任务定期去分析业务用户下所有数据库对象。Sql代码 收藏代码variable job number;beginsys.dbms_job.submit(job =》 :job,what =》 ’sys.dbms_stats.gather_schema_stats(ownname =》 ’’USR_MIKI’’,estimate_percent =》 30,method_opt =》 ’’FOR ALL INDEXED COLUMNS SIZE AUTO’’,cascade =》 true,options =》 ’’GATHER’’);’,next_date =》 to_date(’16-12-2012 00:56:24’, ’dd-mm-yyyy hh34:mi:ss’),interval =》 ’sysdate+7’);commit;end;/例如,设置为每周六运行一次。

如何分析Oracle

以oracle表分析为例:drop table test;select count(*) from test;--创建测试表create table test(id number(9),nick varchar2(30));--插入测试数据begin for i in 1..100000 loop insert into test(id) values(i); end loop; commit;end;select * from test;--更新nick字段,使数据发生严重倾斜update test set nick=’abc’ where rownum《99999;--创建索引create index idx_test_nick on test(nick);update test set nick=’def’ where nick is null;--只对索引进行分析analyze index idx_test_nick compute statistics;select * from user_indexes;--查看索引名,对应存储的数据块,不同的key数量,记录数(行数)的分析信息select index_name, LEAF_BLOCKS, DISTINCT_KEYS, NUM_ROWS from user_indexes where index_name = ’IDX_TEST_NICK’;--dba_tab_col_statistics--查看表的统计信息select COLUMN_NAME, NUM_BUCKETS, num_distinct from USER_tab_columns where table_name = ’TEST’;select * from test where nick =’abc’;Execution Plan---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE 1 0 TABLE ACCESS (BY INDEX ROWID) OF ’TEST’ 2 1 INDEX (RANGE SCAN) OF ’IDX_TEST_NICK’ (NON-UNIQUE)select * from test where nick =’def’;Execution Plan---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE 1 0 TABLE ACCESS (BY INDEX ROWID) OF ’TEST’ 2 1 INDEX (RANGE SCAN) OF ’IDX_TEST_NICK’ (NON-UNIQUE)--由上可以看到,对索引分析之后,sql的执行路径都是基于规则的,索引的字段的偏移--先根据索引找到rowid,然后再根据rowid读取记录,这个过程肯定比全表扫描读取记录要慢--user_part_col_statistics 分区分析信息--分析表的第二列nickanalyze table test compute statistics for columns size 2 nick;select * from test where nick =’abc’;Execution Plan---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE 1 0 TABLE ACCESS (BY INDEX ROWID) OF ’TEST’ 2 1 INDEX (RANGE SCAN) OF ’IDX_TEST_NICK’ (NON-UNIQUE)--根据上面的执行计划,还是按照规则来执行的--分析表analyze table test compute statistics for table;select * from test where nick =’abc’;Execution Plan---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=49 Card=99998 Bytes= 1499970) 1 0 TABLE ACCESS (FULL) OF ’TEST’ (Cost=49 Card=99998 Bytes=14 99970)--分析表之后,完全按照成本来执行--删除所有的统计数据,并只对表与列进行分析,不分析索引,--ORACLE使用CBO的优化器,并产生了正确的执行计划analyze table test delete statistics;--分析列nickanalyze table test compute statistics for table for columns size 2 nick;select * from test where nick =’abc’;Execution Plan---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=49 Card=99998 Bytes= 1499970) 1 0 TABLE ACCESS (FULL) OF ’TEST’ (Cost=49 Card=99998 Bytes=14 99970) --select * from test where nick =’def’;Execution Plan---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=2 Bytes=30) 1 0 TABLE ACCESS (BY INDEX ROWID) OF ’TEST’ (Cost=2 Card=2 Byt es=30) 2 1 INDEX (RANGE SCAN) OF ’IDX_TEST_NICK’ (NON-UNIQUE) (Cost =1 Card=2)--创建TEST表ID列上的索引,但不对索引进行分析create index idx_test_id on test(id);Execution Plan---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=1000 Bytes=15 000) 1 0 TABLE ACCESS (BY INDEX ROWID) OF ’TEST’ (Cost=2 Card=1000 Bytes=15000) 2 1 INDEX (RANGE SCAN) OF ’IDX_TEST_ID’ (NON-UNIQUE) (Cost=1 Card=400)--当条件中即有id,又有nick时,因为nick上有直方图,ORACLE知道nick=’abc’的值特别的多,所以不走IDX_TEST_NICK索引,走IDX_TEST_ID上的索引select * from test where id=5 and nick=’abc’;Execution Plan---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=1000 Bytes=15 000) 1 0 TABLE ACCESS (BY INDEX ROWID) OF ’TEST’ (Cost=2 Card=1000 Bytes=15000) 2 1 INDEX (RANGE SCAN) OF ’IDX_TEST_ID’ (NON-UNIQUE) (Cost=1 Card=400)--当条件中即有id,又有nick时,因为nick上有直方图,ORACLE知道nick=’def’的值特别的少,所以走IDX_TEST_NICK上的索引,不走IDX_TEST_ID索引select * from test where id=5 and nick=’def’;Execution Plan---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=1 Bytes=15) 1 0 TABLE ACCESS (BY INDEX ROWID) OF ’TEST’ (Cost=2 Card=1 Byt es=15) 2 1 INDEX (RANGE SCAN) OF ’IDX_TEST_NICK’ (NON-UNIQUE) (Cost =1 Card=2)select * from test where nick=’def’ and id=5;Execution Plan---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=1 Bytes=15) 1 0 TABLE ACCESS (BY INDEX ROWID) OF ’TEST’ (Cost=2 Card=1 Byt es=15) 2 1 INDEX (RANGE SCAN) OF ’IDX_TEST_NICK’ (NON-UNIQUE) (Cost =1 Card=2)--在分析ID列后,ORACLE发现ID列的选择度更高,所以不再选择IDX_TEST_NICK索引,而是选择IDX_TEST_IDanalyze table test compute statistics for columns size 1 id;select * from test where id=5 and nick=’def’;Execution Plan---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=1 Bytes=7) 1 0 TABLE ACCESS (BY INDEX ROWID) OF ’TEST’ (Cost=2 Card=1 Byt es=7) 2 1 INDEX (RANGE SCAN) OF ’IDX_TEST_ID’ (NON-UNIQUE) (Cost=1 Card=1) /*下面来看另外一种情况,我们删除所有的统计数据,然后在ID列上创建唯一索引,在此条件下,只分析表与分析列nick,我们看到ORACLE走了正确的执行计划,走了UK_TEST_ID,其实从这里也给我们带来很多的启示:在主键与唯一键约束的列上是否需要直方图的问题?如果在这些列上有像这样的查询where id 》 100 and id 《 1000,我们还是需要有直方图的,但除此之外,好像真的没有直方图的必要了!*/analyze table test delete statistics; drop index idx_test_id;create unique index uk_test_id on test(id);--分析表的第二列nickanalyze table test compute statistics for table for columns size 2 nick;select * from test where id=5 and nick=’def’;Execution Plan---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=1 Bytes=15) 1 0 TABLE ACCESS (BY INDEX ROWID) OF ’TEST’ (Cost=2 Card=1 Byt es=15) 2 1 INDEX (UNIQUE SCAN) OF ’UK_TEST_ID’ (UNIQUE) (Cost=1 Car d=100000) 从以上一系列的实验可以看出,对ORACLE的优化器CBO来说,表的分析与列的分析才是最重要的,索引的分析次之。还有我们可以考虑我们的哪些列上需要直方图,对于bucket的个数问题,oracle的默认值是75个,所以根据你的应用规则,选择合适的桶数对性能也是有帮助的。因为不必要的桶的个数的大量增加,必然会带来SQL语句硬解析时产生执行计划的复杂度问题。

我要对oracle 数据库 中的表 进行表分析

analyze table 表名 compute statistics (sample 20%);后面括号的是抽样统计,是为了加快分析速度,也可以不用,做全表分析。

oracle表分析命令dbms_stats分析表使用问题

主要收集如行数,列的distince、表段大小等等如果做表关联查询,统计信息也会用到一般要分析,不然统计信息不准可能走错执行计划,比如一个分区原先1行,插入后变几亿行,这时统计信息不准确的话可能就走错误执行计划了。

oracle 表分析(如何在ORACLE系统中对表进行统计分析)

本文编辑:admin

更多文章:


ps网页设计素材(下载室内设计用的ps素材有哪些网站)

ps网页设计素材(下载室内设计用的ps素材有哪些网站)

本文目录下载室内设计用的ps素材有哪些网站ps素材网站有哪些如何用photoshop制作网页界面下载室内设计用的ps素材有哪些网站House Beautiful,HomeTalk,Home Decor,Freshome,Home Desig

2023年10月16日 05:00

hierarchy of difficulty(对表示尊重、尊敬英语 急用!谢谢啦)

hierarchy of difficulty(对表示尊重、尊敬英语 急用!谢谢啦)

本文目录对表示尊重、尊敬英语 急用!谢谢啦difficulty怎么读difficulty是什么词对表示尊重、尊敬英语 急用!谢谢啦 对……表示尊重、尊敬 Respect, respect for sth 例如:. I respect

2024年7月6日 00:21

深圳龙岗区布吉街道(深圳布吉街道邮编号多少)

深圳龙岗区布吉街道(深圳布吉街道邮编号多少)

这篇文章给大家聊聊关于深圳龙岗区布吉街道,以及深圳布吉街道邮编号多少对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录深圳布吉街道邮编号多少广东省深圳市龙岗区布吉街道下辖村委会有哪些布吉属于深圳哪个区深圳龙岗区布吉街道邮编深圳布

2024年7月31日 15:50

windowsxp(windows xp能玩什么怎么样)

windowsxp(windows xp能玩什么怎么样)

本文目录windows xp能玩什么怎么样Windows xp系统怎么下载安装windows xp能玩什么怎么样WindowsXP系统是非常经典的一个系统,优点:体积小,速度快,容易上手。不过XP系统基本都是32位的不支持4g以上内存。有些

2024年7月10日 19:21

hidden through time(HiddenThroughTime时代之下全成就攻略)

hidden through time(HiddenThroughTime时代之下全成就攻略)

本文目录HiddenThroughTime时代之下全成就攻略烧毁的诺顿 一诗英语原文要全的!下句括号里 的句型不是watch sb do吗后面怎么加的是介词throughHiddenThroughTime维京传说诸神黄昏详细详细攻略Hidd

2024年4月26日 16:25

strip 函数(python高手看过来,关于strip()函数会去掉首尾的指定字符,但是指定字符匹配到多次时怎么只去掉一次呢)

strip 函数(python高手看过来,关于strip()函数会去掉首尾的指定字符,但是指定字符匹配到多次时怎么只去掉一次呢)

本文目录python高手看过来,关于strip()函数会去掉首尾的指定字符,但是指定字符匹配到多次时怎么只去掉一次呢python如何去掉换行符如何解决php函数strippython高手看过来,关于strip()函数会去掉首尾的指定字符,但

2024年6月24日 04:38

serum 在化妆品中怎么翻译?serum是乳液还是精华

serum 在化妆品中怎么翻译?serum是乳液还是精华

本文目录serum 在化妆品中怎么翻译serum是乳液还是精华serum在化妆品中是什么意思serum什么意思serum的音标serum的意思serum是什么意思serum化妆品上是什么意思serum化妆品中的意思是serum 在化妆品中怎

2024年7月12日 05:51

vscode配置python(mac下VScode怎么配置编译Python)

vscode配置python(mac下VScode怎么配置编译Python)

“vscode配置python”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看vscode配置python(mac下VScode怎么配置编译Python)!本文目录mac下VScode怎么配置编译Python首先安装vsco

2024年8月11日 06:07

字符串长度不足补空格(Python问题,试补充代码,当输入的字符串不足16位时,用空格补充到16位)

字符串长度不足补空格(Python问题,试补充代码,当输入的字符串不足16位时,用空格补充到16位)

本文目录Python问题,试补充代码,当输入的字符串不足16位时,用空格补充到16位VC 如何固定字符串长度,不足补空格C语言中,比如一个字符串长度是10,如果存储长度不足10那么在右边补充空格,而且存储内容不定长设置excel单元格位数为

2024年4月26日 14:15

宾得镜头是什么卡口?宾得镜头dfa85和fa85的区别

宾得镜头是什么卡口?宾得镜头dfa85和fa85的区别

本文目录宾得镜头是什么卡口宾得镜头dfa85和fa85的区别最值得拥有的5只宾得镜头有哪些宾得的全副镜头都有哪些呢宾得变焦镜头推荐关于宾得单反相机的镜头宾得镜头哪款好宾得镜头的发展历史宾得镜头K 和 M有什么区别宾得镜头是什么卡口宾得是日本

2024年7月23日 19:30

何为数组的初始化(数组的定义和初始化)

何为数组的初始化(数组的定义和初始化)

本文目录数组的定义和初始化C语言中数组初始化是什么c语言中一维数组的初始化是什么意思,有什么作用数组的定义和初始化数组可以说是目前为止讲到的第一个真正意义上存储数据的结构。虽然前面学习的变量也能存储数据,但变量所能存储的数据很有限。不仅如此

2024年7月21日 05:36

嵌入式驱动开发(嵌入式开发有分几类呢)

嵌入式驱动开发(嵌入式开发有分几类呢)

本文目录嵌入式开发有分几类呢嵌入式系统,驱动开发需要掌握什么知识嵌入式驱动开发需要了解的知识大概有哪些呢嵌入式Linux设备驱动开发驱动开发一定是嵌入式开发吗嵌入式开发有分几类呢嵌入式技术已经无处不在,从随身携带的mp3、语言复读机、手机、

2024年7月5日 05:01

toys怎么读?英语toys怎么读

toys怎么读?英语toys怎么读

本文目录toys怎么读英语toys怎么读Toys的复数形式是不是Toiestoys的中文意思是什么toys的读音及意思toys怎么读英语toys怎么读toys生词本 中频词,你记住了吗?英 n. 玩具,玩物( toy的名词复数 ) 网 络

2024年7月23日 22:26

c语言程序设计要用电脑吗(c语言编程电脑配置要求)

c语言程序设计要用电脑吗(c语言编程电脑配置要求)

大家好,c语言程序设计要用电脑吗相信很多的网友都不是很明白,包括c语言编程电脑配置要求也是一样,不过没有关系,接下来就来为大家分享关于c语言程序设计要用电脑吗和c语言编程电脑配置要求的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我

2024年8月25日 15:20

部署php网站(如何安装部署php网站)

部署php网站(如何安装部署php网站)

各位老铁们好,相信很多人对部署php网站都不是特别的了解,因此呢,今天就来为大家分享下关于部署php网站以及如何安装部署php网站的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录如何安装部署php网站如何在cen

2024年7月15日 17:44

媒体查询在css3中的作用(前端面试媒体查询怎么说)

媒体查询在css3中的作用(前端面试媒体查询怎么说)

各位老铁们好,相信很多人对媒体查询在css3中的作用都不是特别的了解,因此呢,今天就来为大家分享下关于媒体查询在css3中的作用以及前端面试媒体查询怎么说的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录前端面试媒

2024年9月8日 18:55

哈尔滨网站设计模板(哈尔滨网站建设哪家好而且价格不贵)

哈尔滨网站设计模板(哈尔滨网站建设哪家好而且价格不贵)

大家好,关于哈尔滨网站设计模板很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于哈尔滨网站建设哪家好而且价格不贵的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!本

2024年8月3日 16:05

excel怎么查找内容(如何利用excel表格快速查找到指定的内容)

excel怎么查找内容(如何利用excel表格快速查找到指定的内容)

本文目录如何利用excel表格快速查找到指定的内容excel中查找功能怎么使用excel怎么查找自己想要的内容excel如何快速查找内容在excel表格里怎么查找 教你5步在excel表格里查找如何在Excel表格中进行查找excel怎么搜

2024年7月4日 21:58

多线程运算能力(天玑9000处理器怎么样)

多线程运算能力(天玑9000处理器怎么样)

本文目录天玑9000处理器怎么样多线程和多核之间的差异CPU x 4740属性服务器和普通电脑在硬件配置上的区别是什么天玑9000处理器怎么样天玑9000是联发科推出的一款高端移动处理器,它采用了12纳米工艺制造,集成了8核心64位ARM

2024年7月21日 05:23

表单提交地址(asp怎样获得提交表单中的文件地址,)

表单提交地址(asp怎样获得提交表单中的文件地址,)

大家好,今天小编来为大家解答以下的问题,关于表单提交地址,asp怎样获得提交表单中的文件地址,这个很多人还不知道,现在让我们一起来看看吧!本文目录asp怎样获得提交表单中的文件地址,想改变表单提交显示的地址该怎么做JavaScript这个表

2024年8月26日 02:01

近期文章

本站热文

iphone vpn设置(ios设置vpn快捷开关)
2024-07-22 15:01:12 浏览:2334
windows12正式版下载(操作系统Windows Server 2012 R2,在哪能下载到,公司用的)
2024-07-20 17:26:53 浏览:1730
java安装教程(win10如何安装JAVA)
2024-07-19 19:55:49 浏览:1155
client mfc application未响应(每次进cf就提示client MFC Application未响应该怎么办啊!急急急)
2024-07-20 11:15:58 浏览:1152
标签列表

热门搜索