灵魂腐蚀 发表于 2015-1-16 22:33:34

MYSQL教程之ORACLE数据库工具统计剖析手艺使用

无疑希望员工得到系统、有深度的培训,显然MySQL在这一点上还做得很不够。oracle|工具|数据|数据库|统计
数据库工具统计剖析手艺使用



ORACLE在实行SQL时假如利用本钱体例剖析则一切的本钱剖析信息来历依托于体系的统计剖析表(DBA_TABLES、DBA_INDEXES、DBA_TAB_COLUMNS)数据,假如说统计剖析的数据是禁绝确的,那大概会使ORACLE剖析出来的路径实行功能极差,以是统计剖析数据是影响ORACLE功能极主要的信息。



统计剖析次要包含发生表及索引的统计信息

表的统计信息次要包含表的行数,每行的均匀长度(字节),余暇块,统计工夫等信息

索引的统计信息次要包含行数、层数、叶块数、统计工夫等信息。

别的ORACLE还能够统计列及数据不合错误称信息,9i还能够统计体系信息(CPU,I/O)



ORACLE实行本钱剖析时起首掏出所使用表及索引的统计数据举行剖析,个中数据行数是一个主要的参数,由于ORACLE在剖析表巨细时行数为次要参数,假如举行两个表团结时,ORACLE会经由过程剖析表的巨细,决意使用小表举行全表查询,而年夜表实行团结查询,这类功能分明高于先年夜表举行全表扫描。索引的统计信息对剖析也发生对照年夜的影响,如ORACLE经由过程统计能够剖析发生多个索引的优先级及索引的有用性来断定最优的索引战略。ORACLE还能够统计列及数据对称信息以发生更准确的剖析。如一个表有A字段的索引,个中A共有两种值1和0,共10000笔记录,为0的纪录有10条,为1的纪录有9990条,这时候假如没有举行列数据不合错误称的统计信息,那末ORACLE对A=0及A=1前提查询城市举行索引,但实践使用对A=0的索引功能失掉了很年夜的进步,而A=1的索引反而使功能下落。以是说索引特性值剖析信息对使用索引发生严重影响,准确的信息使ORACLE不会利用不该该用的索引。



实践剖析

zl_cbqc和zl_yhjbqk都没有创建统计信息,实行以下两个SQLORACLE将发生分歧的实行企图。

1select*fromdlyx.zl_cbqcb,dlyx.zl_yhjbqkawherea.qc_bh=b.qc_bh

实行企图:

SELECTSTATEMENT,GOAL=CHOOSE

NESTEDLOOPS

TABLEACCESSFULLDLYXZL_YHJBQK

TABLEACCESSBYINDEXROWIDDLYXZL_CBQC

INDEXUNIQUESCANDLYX抄表区册主键



2select*fromdlyx.zl_yhjbqka,dlyx.zl_cbqcbwherea.qc_bh=b.qc_bh

实行企图:

SELECTSTATEMENT,GOAL=CHOOSE

NESTEDLOOPS

TABLEACCESSFULLDLYXZL_CBQC

TABLEACCESSBYINDEXROWIDDLYXZL_YHJBQK

INDEXRANGESCANDLYX区册索引





在对两个表举行了统计剖析后

3select*fromdlyx.zl_yhjbqka,dlyx.zl_cbqcbwherea.qc_bh=b.qc_bh

实行企图:

SELECTSTATEMENT,GOAL=CHOOSE159728539689449

HASHJOIN159728539689449

TABLEACCESSFULLDLYXZL_CBQC142619596

TABLEACCESSFULLDLYXZL_YHJBQK157728536338211



4select*fromdlyx.zl_cbqcb,dlyx.zl_yhjbqkawherea.qc_bh=b.qc_bh

实行企图:

SELECTSTATEMENT,GOAL=CHOOSE159728539689449

HASHJOIN159728539689449

TABLEACCESSFULLDLYXZL_CBQC142619596

TABLEACCESSFULLDLYXZL_YHJBQK157728536338211



从以上测试能够分明看出ORACLE的剖析了局

第1条SQL与第2条SQL在没有统计剖析的信息下举行,ORACLE没法举行判别,只能以划定规矩办法举行剖析,依据表的呈现前后按次有分明干系。

第3条SQL与第4条SQL在有统计剖析的信息下举行,ORACLE剖析与表的呈现前后按次有关,由于它已晓得了表的数据量而且已断定前往的数据量基础上是两个表一切的数据,以是对表两个表举行了HASHJOIN(同时掏出两个表的数据然后在内存中举行团结发生前往了局)。



相干手艺

用analyze语句发生剖析数据

剖析表:analyzetablezl_yhjbqkestimatestatisticssample20percent

剖析索引:analyzeindex用户材料表主键computestatistics

剖析列:analyzetablezl_yhjbqkcomputestatisticsforcolumnshbs_bh

剖析索引列:analyzetablezl_yhjbqkcomputestatisticsforallindexedcolumns

用sys.dbms_utility包剖析数据

剖析数据库(包含一切的用户工具和体系工具):analyze_database

剖析用户一切的工具(包含用户计划内的表、索引、簇):analyze_schema

用sys.dbms_stats包处置剖析数据

剖析数据库(包含一切的用户工具和体系工具):gather_database_stats

剖析用户一切的工具(包含表、索引、簇):gather_schema_stats

剖析表:gather_table_stats

剖析索引:gather_index_stats

删除数据库统计信息:delete_database_stats

删除用户计划统计信息:delete_schema_stats

删除表统计信息:delete_table_stats

删除索引统计信息:delete_index_stats

删除列统计信息:delete_column_stats

设置表统计信息:set_table_stats

设置索引统计信息:set_index_stats

设置列统计信息:set_column_stats



ORACLE保举用户接纳sys.dbms_stats包体举行剖析,由于在ORACLE9i及其以上的版本周全扩大的此包体的功效。sys.dbms_utility包体举行剖析时会对一切的信息全体剖析一遍,工夫对照长,而在9i中sys.dbms_stats能够使用表修正监控手艺来判别需统计剖析的表举行,节俭了用户的剖析资本。



备注:

ORACLE在失掉了表的统计剖析数据后才会举行本钱剖析,不然接纳划定规矩剖析。

并非一切的统计数据城市对ORACLE剖析发生影响,有些统计数据ORACLE其实不处置,只是供应给用户一个参考信息,也大概在ORACLE今后的版本中使用这些信息举行剖析。

剖析表的登任命户必需对表具有会见权限或具有DBA或Analyzeany权限

本文是我刚学ORACLE数据库时写,大概有些毛病的中央,但愿网友能授与斧正!

叶正盛
2003-08-15
尽管DBaaS模式有缺点,但它还是适合某些客户群体,这为解决方案提供商提供了新的商机。鉴于云服务的增长,解决方案提供商除了拥抱这些技术还有什么选择呢?如果他们不这样做,他们就会冒着被竞争对手击败的风险。但他们不能只想到如何把DBaaS的利润率与企业内部系统相比较。

只想知道 发表于 2015-1-17 18:13:23

你觉得我的非分区索引无法对起子分区,你可以提醒我一下呀!没有任何的提醒,直接就变成了非分区表。不知道这算不算一个bug。大家也可以试试。

简单生活 发表于 2015-1-21 07:10:11

而SQLServer如果能像Oracle一样可以为登陆分配如:5%的cpu,10%的内存。就可以解决这个漏洞。

第二个灵魂 发表于 2015-1-30 10:45:38

多加的系统视图和实时系统信息这些东西对DBA挑优非常有帮助,但是感觉粒度还是不太细。

小魔女 发表于 2015-2-6 10:11:53

大侠们有推荐的书籍和学习方法写下吧。

若天明 发表于 2015-2-15 23:09:55

一个是把SQL语句写到客户端,可以使用DataSet进行加工;

再现理想 发表于 2015-3-4 18:01:53

varchar(max)\\\\nvarchar(max)类型的引入大大的提高了编程的效率,可以使用字符串函数对CLOB类型进行操作,这是一个亮点。

灵魂腐蚀 发表于 2015-3-19 11:52:50

如安全管理、备份恢复、性能监控和调优等,SQL只要熟悉基本操作就可以,只要程序设计部分只要稍加了解即可(如存储过程、触发器等)。
页: [1]
查看完整版本: MYSQL教程之ORACLE数据库工具统计剖析手艺使用