国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > Oracle > 正文

Oracle Optimizer:遷移到使用基于成本的優(yōu)化器-----系列1.1

2024-08-29 13:49:20
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  
Oracle Optimizer:遷移到使用基于成本的優(yōu)化器-----系列1.1

      

假如在Oracle以前的版本(7.0或更早)中開發(fā)應(yīng)用程序,數(shù)據(jù)庫(kù)會(huì)采用基于規(guī)則的優(yōu)化器(譯者注:以下稱RBO),本篇將幫助你理解Oracle優(yōu)化器并遷移到基于成本優(yōu)化器(譯者注:以下稱CBO)的幾種高效方法.下面是五大部分的第一部分

 

第一部分

1.         什么是優(yōu)化器?

2.         為什么要優(yōu)化?

3.         可用的優(yōu)化器.

4.         為什么要移除RBO?

5.         為什么要遷移到CBO?

 

第二部分

1.         影響CBO的初始化參數(shù).

2.         影響CBO的Oracle內(nèi)部參數(shù).

 

第三部分

1.         升級(jí)至CBO的設(shè)置變化.

2.         生成統(tǒng)計(jì)資料

3.         DML監(jiān)視

 

第四部分

1.         提示.

2.         存儲(chǔ)概要

3.         SYS模式的統(tǒng)計(jì)資料

 

第五部分

1.         新的權(quán)限

2.         怎樣在CBO中分析執(zhí)行計(jì)劃

3.         Oracle application 11i的CBO具體信息

4.         結(jié)論

 

1.         什么是優(yōu)化器?

在Oracle中,執(zhí)行一個(gè)查詢可能有不只一種方法,擁有最佳等級(jí)的執(zhí)行計(jì)劃,或者說(shuō)是最快速度最少成本返回輸出并達(dá)到最佳資源利用的執(zhí)行計(jì)劃.優(yōu)化器生成執(zhí)行計(jì)劃。優(yōu)化器是運(yùn)行在數(shù)據(jù)庫(kù)中致力以得到基于不同條件下執(zhí)行路徑列表的引擎并且選擇運(yùn)行查詢的最高效執(zhí)行計(jì)劃。一旦執(zhí)行計(jì)劃生成,它將執(zhí)行輸出。在Oracle中優(yōu)化器與DML語(yǔ)句有關(guān).

 

2.         為什么要優(yōu)化?

你知道!優(yōu)化一個(gè)針對(duì)執(zhí)行時(shí)以最少時(shí)間和最佳的資源利用的查詢,意味著快速和高效。對(duì)于資源,意味著CPU利用情況,磁盤輸入輸出,內(nèi)存消耗和其它范圍的網(wǎng)絡(luò)操作。不考慮你的服務(wù)器在這些資源上是多么充足,不適當(dāng)或較不理想的的查詢總是付出昂貴的代價(jià)并拖慢你的任務(wù),或者對(duì)服務(wù)器上的其它處理產(chǎn)生影響.依靠于各種因素的查詢范圍是昂貴的,包括抽取的結(jié)果集大小,掃描檢索結(jié)果集的數(shù)據(jù)的大小和系統(tǒng)的即時(shí)負(fù)荷。適當(dāng)?shù)恼Z(yǔ)法優(yōu)化將節(jié)省用戶運(yùn)行時(shí)間的消耗和不必要的資源利用。

 

3.         可用的優(yōu)化器

Oracle有兩種模式的優(yōu)化器,基于規(guī)則和基于成本,它決定了最佳的執(zhí)行計(jì)劃。

本篇重點(diǎn)介紹CBO,簡(jiǎn)要概述RBO.

 

3.1          基于規(guī)則的優(yōu)化(RBO)

RBO遵循簡(jiǎn)單的分級(jí)方法學(xué)。
RBO使用15種級(jí)別要點(diǎn),當(dāng)接收到查詢,優(yōu)化器將評(píng)估使用到的要點(diǎn)數(shù)目,然后選擇最佳級(jí)別(最少的數(shù)量)的執(zhí)行路徑來(lái)運(yùn)行查詢,15個(gè)要點(diǎn)級(jí)別如下:

                                       

                  .使用ROWID的單獨(dú)記錄

                  .使用簇連接的單獨(dú)記錄.

                  .使用散列簇主鍵的單獨(dú)記錄.

                  .使用主鍵的單獨(dú)記錄.

                  .簇連接.

                  .散列簇連接

                  .索引簇主鍵.

                  .復(fù)合主鍵.

                  .單列主鍵.

                  .索引列的結(jié)合范圍查找.

                  .索引列的非結(jié)合范圍查找.

                  .排序合并連接.

                  .索引列的最大max或min

                  .索引列的order by.

                                 .全表掃描.

        舉例來(lái)說(shuō),假如生成一個(gè)在where子句條件中精確匹配兩列的表的查詢,一列擁有主鍵(對(duì)應(yīng)于使用主鍵的單獨(dú)記錄.)而別一列擁有非主鍵(對(duì)應(yīng)于單列主鍵),則RBO更喜歡主鍵(對(duì)應(yīng)于使用主鍵的單獨(dú)記錄.),而不是非主鍵(對(duì)應(yīng)于單列主鍵).

當(dāng)在一個(gè)查詢中涉及到要訪問(wèn)多個(gè)表,優(yōu)化器需要確定那個(gè)表是驅(qū)動(dòng)表.RBO生成一組連接順序,每一個(gè)表做為第一個(gè)表,然后優(yōu)化器從執(zhí)行計(jì)劃的結(jié)果集中選擇最理想的計(jì)劃.優(yōu)化器評(píng)估不同條件諸如(最少的嵌套循環(huán),最少的排序合并連接,最佳級(jí)別的表訪問(wèn)路徑,等等),假如仍然不能比較出結(jié)果,則優(yōu)化器會(huì)選擇查詢的FROM子句第一個(gè)表作為驅(qū)動(dòng)表.因此,常規(guī)條件下的編碼實(shí)踐將把驅(qū)動(dòng)表放在最右邊.其它的表按訪問(wèn)順序跟隨在FROM子句中. 也就是說(shuō),表的順序是從右到左的訪問(wèn)順序。

請(qǐng)注重,用以搜索列的操作符也扮演著決定級(jí)別的角色,有時(shí)甚至考慮索引的時(shí)間作為級(jí)別

例如下面的表證實(shí)了在列1和列2上的索引使用情況,假如它們兩個(gè)在where子句上用”=”連接

例:

select * from am79 where col1 = 1 and col2 = 'amar';

      -- here both col1 and col2 are indexed.

 

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

              Normal index types                        Index used in RBO

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

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

non-unique        non-unique             c

non-unique       non-unique                             a + b

non-unique       non-unique      non-unique             c

unique           non-unique                             a

unique                           non-unique             a

unique           unique                                 b (the most recent index created)

unique           unique          unique                 c

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

-The above is tested on Oracle 8.1.7.1.

-In case of non-unique single column indexes, both indexes are used.

-In case of unique indexes, they are not combined for execution plan, any one is taken.

-PReference is given to the index available with the "=" Operator column, than with

others operators.

-Don't create bitmap & function-based indexes, these will not work in RBO.

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

 

RBO偏好Oracle早期版本的大多數(shù)設(shè)置作為執(zhí)行計(jì)劃路徑,這種選擇是統(tǒng)一的。
查詢總會(huì)產(chǎn)生同樣的方法對(duì)于運(yùn)行在不同數(shù)據(jù)庫(kù)上相同的應(yīng)用程序(待續(xù)).

 

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 政和县| 正蓝旗| 阜城县| 乌海市| 五台县| 米脂县| 张家川| 华亭县| 长沙县| 蒙山县| 甘泉县| 沁阳市| 呈贡县| 福海县| 兖州市| 中方县| 同仁县| 安多县| 通许县| 盐城市| 武清区| 永川市| 东至县| 天气| 老河口市| 容城县| 靖宇县| 长治市| 通许县| 和平区| 和龙市| 阜新市| 土默特左旗| 罗定市| 霍林郭勒市| 深泽县| 岱山县| 荣昌县| 桂平市| 新田县| 紫阳县|