若天明 发表于 2015-1-16 22:54:49

MYSQL网页编程之数据库工具统计剖析手艺使用

对于现有业务,可以轻松移植到MySQL。当你需要替换掉老的硬件,当你需要削减历史遗留下的老系统的时候,选用MySQL对于财务部门来说更具吸引力。工具|数据|数据库|统计
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权限
你会发现实际上MySQL可以更少地占用资金,前者的每CPU许可费用一般从4000美元到25000美元不等,而MySQL企业版的支持和维护成本就更低了。

兰色精灵 发表于 2015-1-20 06:06:35

如安全管理、备份恢复、性能监控和调优等,SQL只要熟悉基本操作就可以,只要程序设计部分只要稍加了解即可(如存储过程、触发器等)。

莫相离 发表于 2015-1-28 20:06:16

光写几个SQL实在叫无知。

柔情似水 发表于 2015-2-5 22:46:31

多走走一此相关论坛,多看一些实例开发,多交流0经验,没什么的,我也是刚学没多久!加油

若相依 发表于 2015-2-14 00:52:47

换言之,只有在不断的失败中尝试成功,而关于失败的总结却是很少的

海妖 发表于 2015-3-4 03:35:30

其实可以做一下类比,Oracle等数据库产品老早就支持了java编程,而且提供了java池参数作为用户配置接口。但是现在有哪些系统大批使用了java存储过程?!连Oracle自己的应用都不用为什么?!

冷月葬花魂 发表于 2015-3-11 15:59:40

一个百万级别的基本信息表A,一个百万级别的详细记录表B,A中有个身份证id,B中也有身份id;先要找出A中在B的详细记录。

乐观 发表于 2015-3-19 01:42:44

如果你是从“学习某一种数据库应用软件,从而获得应聘的资本和工作机会”的角度来问的话。

透明 发表于 2015-3-27 03:08:17

财务软件要用SQL也只是后台的数据库而已,软件都是成品的,当然多学东西肯定是有好处的..

飘灵儿 发表于 2015-3-27 03:08:16

大家注意一点。如下面的例子:

老尸 发表于 2015-3-27 03:08:20

比如,MicrosoftSQLServer2008的某一个版本可以满足现在的这个业务的需要,而且价格还比Oracle11g要便宜,那么这一产品就是适合的。
页: [1]
查看完整版本: MYSQL网页编程之数据库工具统计剖析手艺使用