莫相离 发表于 2015-1-16 22:29:31

MYSQL网页编程之Oracle Optimizer:迁徙到利用基于本钱的...

”由于MySQL已经是一个运行了众多知名Web2.0网站的数据,包括Craigslist、Digg、Wikipedia和Google等,或许我们可以说每一个Web2.0公司实质上是一个使用MySQL数据库的公司。oracle|优化
OracleOptimizer:迁徙到利用基于本钱的优化器-----系列1.1



假如在Oracle之前的版本(7.0或更早)中开辟使用程序,数据库会接纳基于划定规矩的优化器(译者注:以下称RBO),本篇将匡助你了解Oracle优化器并迁徙到基于本钱优化器(译者注:以下称CBO)的几种高效办法.上面是五年夜部分的第一部分



第一部分

1.甚么是优化器?

2.为何要优化?

3.可用的优化器.

4.为何要移除RBO?

5.为何要迁徙到CBO?



第二部分

1.影响CBO的初始化参数.

2.影响CBO的Oracle外部参数.



第三部分

1.晋级至CBO的设置变更.

2.天生统计材料

3.DML监督



第四部分

1.提醒.

2.存储提要

3.SYS形式的统计材料



第五部分

1.新的权限

2.如何在CBO平分析实行企图

3.OracleApplication11i的CBO具体信息

4.结论



1.甚么是优化器?

在Oracle中,实行一个查询大概有不但一种办法,具有最好品级的实行企图,大概说是最疾速度起码本钱前往输入并到达最好资本使用的实行企图.优化器天生实行企图。优化器是运转在数据库中努力以失掉基于分歧前提下实行路径列表的引擎而且选择运转查询的最高效实行企图。一旦实行企图天生,它将实行输入。在Oracle中优化器与DML语句有关.



2.为何要优化?

你晓得!优化一个针对实行时以起码工夫和最好的资本使用的查询,意味着疾速和高效。关于资本,意味着CPU使用情形,磁盘输出输入,内存损耗和别的局限的收集操纵。不思索你的服务器在这些资本上是何等充分,不得当或较不睬想的的查询老是支付高贵的价值并拖慢你的义务,大概对服务器上的别的处置发生影响.依附于各类要素的查询局限是高贵的,包含抽取的了局集巨细,扫描检索了局集的数据的巨细和体系的立即负荷。得当的语法优化将节俭用户运转工夫的损耗和不用要的资本使用。



3.可用的优化器

Oracle有两种形式的优化器,基于划定规矩和基于本钱,它决意了最好的实行企图。

本篇重点先容CBO,扼要概述RBO.



3.1基于划定规矩的优化(RBO)

RBO遵守复杂的分级办法学。RBO利用15种级别要点,当吸收到查询,优化器将评价利用到的要点数量,然后选择最好级别(起码的数目)的实行路径来运转查询,15个要点级别以下:



.利用ROWID的独自纪录

.利用簇毗连的独自纪录.

.利用散列簇主键的独自纪录.

.利用主键的独自纪录.

.簇毗连.

.散列簇毗连

.索引簇主键.

.复合主键.

.单列主键.

.索引列的分离局限查找.

.索引列的非分离局限查找.

.排序兼并毗连.

.索引列的最年夜max或min

.索引列的orderby.

.全表扫描.

举例来讲,假如天生一个在where子句前提中准确婚配两列的表的查询,一列具有主键(对应于利用主键的独自纪录.)而别一列具有非主键(对应于单列主键),则RBO更喜好主键(对应于利用主键的独自纪录.),而不长短主键(对应于单列主键).

当在一个查询中触及到要会见多个表,优化器必要断定谁人表是驱动表.RBO天生一组毗连按次,每个表做为第一个表,然后优化器从实行企图的了局会合选择最幻想的企图.优化器评价分歧前提诸如(起码的嵌套轮回,起码的排序兼并毗连,最好级其余表会见路径,等等),假如仍旧不克不及对照出了局,则优化器会选择查询的FROM子句第一个表作为驱动表.因而,惯例前提下的编码理论将把驱动表放在最右侧.别的的表按会见按次跟从在FROM子句中.也就是说,表的按次是从右到左的会见按次。

请注重,用以搜刮列的操纵符也饰演着决意级其余脚色,偶然乃至思索索引的工夫作为级别

比方上面的表证实了在列1和列2上的索引利用情形,假如它们两个在where子句上用”=”毗连

例:

select*fromam79wherecol1=1andcol2=amar;

--herebothcol1andcol2areindexed.



-------------------------------------------------------------------------------------

Normalindextypes|IndexusedinRBO

column1(a)column2(b)column1+column2(c)|

-------------------------------------------------------------------------------------

non-uniquenon-uniquec

non-uniquenon-uniquea+b

non-uniquenon-uniquenon-uniquec

uniquenon-uniquea

uniquenon-uniquea

uniqueuniqueb(themostrecentindexcreated)

uniqueuniqueuniquec

-------------------------------------------------------------------------------------

-TheaboveistestedonOracle8.1.7.1.

-Incaseofnon-uniquesinglecolumnindexes,bothindexesareused.

-Incaseofuniqueindexes,theyarenotcombinedforexecutionplan,anyoneistaken.

-Preferenceisgiventotheindexavailablewiththe"="operatorcolumn,thanwith

othersoperators.

-Dontcreatebitmap&function-basedindexes,thesewillnotworkinRBO.

-------------------------------------------------------------------------------------



RBO偏好Oracle初期版本的年夜多半设置作为实行企图路径,这类选择是一致的。查询总会发生一样的办法关于运转在分歧数据库上不异的使用程序(待续).


你碰到的问题可能已经在社区中被别的人已经问过,即使没有MySQL学习教程,你也可以提出问题或通过Google来搜索答案。社区的相关负责人士:“MySQL社区是活跃、友好和内容渊博的。”

若相依 发表于 2015-1-19 15:03:47

如果,某一版本可以提供强大的并发响应,但是没有Oracle的相应版本稳定,或者价格较贵,那么,它就是不适合的。

仓酷云 发表于 2015-1-26 09:47:25

以前的DTS轻盈简单。但是现在的SSIS虽然功能强大了很多,但是总是让人感觉太麻烦。看看论坛中询问SSIS的贴子就知道。做的功能太强大了,往往会有很多用户不会用了

第二个灵魂 发表于 2015-2-4 14:09:33

光写几个SQL实在叫无知。

谁可相欹 发表于 2015-2-10 01:51:58

SP4是一个累积性的ServicePack,包含自以前的ServicePack发布以来所有的修补程序(包括MS03-031安全公告)。

小女巫 发表于 2015-2-28 15:05:28

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

海妖 发表于 2015-3-10 00:12:54

可能有的朋友会抱怨集成的orderby,其实如果使用ranking函数,Orderby是少不了的。如果担心Orderby会影响效率,可以为orderby的字段建立聚集索引,查询计划会忽略orderby操作(因为本来就是排序的嘛)。

爱飞 发表于 2015-3-17 03:11:05

如果是将来做数据库的开发设计,就应该详细学习T-SQL的各种细节,包括T-SQL的程序设计、存储过程、触发器以及具体使用某个开发语言来访问数据库。

分手快乐 发表于 2015-3-23 18:10:50

连做梦都在想页面结构是怎么样的,绝非虚言
页: [1]
查看完整版本: MYSQL网页编程之Oracle Optimizer:迁徙到利用基于本钱的...