本篇內(nèi)容介紹了“Oracle中使用optimizer_mode參數(shù)的意義”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
成都網(wǎng)絡(luò)公司-成都網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)10余年經(jīng)驗(yàn)成就非凡,專業(yè)從事做網(wǎng)站、成都網(wǎng)站制作,成都網(wǎng)頁設(shè)計(jì),成都網(wǎng)頁制作,軟文發(fā)布平臺,一元廣告等。10余年來已成功提供全面的成都網(wǎng)站建設(shè)方案,打造行業(yè)特色的成都網(wǎng)站建設(shè)案例,建站熱線:18980820575,我們期待您的來電!Oracle使用Optimizer_mode參數(shù)來控制優(yōu)化器的偏好,9i常用的幾個(gè)參數(shù)有:first_rows,all_rows,first_rows_N,rule
,choose等。而10g少了rule和choose.Oracle 在執(zhí)行SQL語句時(shí),有兩種優(yōu)化方法:即基于規(guī)則的RBO和基于代價(jià)的CBO。 在SQL執(zhí)行的時(shí)候,到底采用何種優(yōu)化方法,就由Oracle參數(shù) optimizer_mode 來決定。
Rule Based Optimizer(RBO)基于規(guī)則
Cost Based Optimizer(CBO)基于成本,或者講統(tǒng)計(jì)信息
SQL> show parameter optimizer_mode;
NAME TYPE VALUE
optimizer_mode string ALL_ROWS
oracle10g開始默認(rèn)是all_rows
ALL_ROWS不管是不是有統(tǒng)計(jì)信息,全部采用基于成本的優(yōu)化方法,返回大數(shù)的量數(shù)據(jù)
FIRST_ROWS_n不管是不是有統(tǒng)計(jì)信息,全部采用基于成本的優(yōu)化方法并以最快的速度,返回前N行記錄
FIRST_ROWS使用成本和試探法相結(jié)合的方法,查找一種可以最快返回前面少數(shù)行的方法
第一個(gè)是返回所有行的最小代價(jià),第二個(gè)是返回前N行的最小代價(jià),最后一個(gè)是返回前面的少量行的最好計(jì)劃
修改全局
alter system set optimizer_mode=all_rows;
修改當(dāng)前session
alter session set optimizer_mode=all_rows;
幾個(gè)參數(shù)的具體解釋:
optimizer_mode =choose
這個(gè)是Oracle的默認(rèn)值。采用這個(gè)值時(shí),Oracle即可以采用基于規(guī)則RBO,也可以采用基于代價(jià)的CBO,到底使用那個(gè)值,取決于當(dāng)前SQL的被訪問的表中是不是有可以使用的統(tǒng)計(jì)信息。如果有多個(gè)被訪問的表,其中有一個(gè)或多個(gè)有統(tǒng)計(jì)信息,那么Oralce會(huì)對沒有統(tǒng)計(jì)信息的表進(jìn)行采樣統(tǒng)計(jì)(即不全部采樣),統(tǒng)計(jì)完成后,使用基于代價(jià)的優(yōu)化方法CBO。如果所有被訪問的表都沒有統(tǒng)計(jì)信息,Oracle就會(huì)采用基于規(guī)則的優(yōu)化方法RBO。
Optimizer_mode=First_rows
在oracle 9i之后這一選項(xiàng)已經(jīng)過時(shí),出于向后兼容的目的保留了這一選項(xiàng),該選項(xiàng)的作用在于尋找能夠在最短的時(shí)間內(nèi)返回結(jié)果集的第一行的執(zhí)行計(jì)劃。這一規(guī)則傾向于促使優(yōu)化器使用索引訪問路徑,偶爾會(huì)出現(xiàn)非常不恰當(dāng)?shù)脑L問路徑。
設(shè)置為這種CBO模式以后,SQL語句返回結(jié)果的速度會(huì)盡可能的快,而不管系統(tǒng)全部的查詢是否會(huì)耗時(shí)較長或者耗系統(tǒng)資源過多。由于利用索引會(huì)使查詢速度加快,所以 first_rows 優(yōu)化模式會(huì)在全表掃描上進(jìn)行索引掃描。這種優(yōu)化模式一般適合于一些OLTP系統(tǒng),滿足用戶能夠在較短時(shí)間內(nèi)看到較小查詢結(jié)果集的要求。
Optimizer_mode=all_rows
優(yōu)化器將尋找能夠在最短的時(shí)間內(nèi)完成語句的執(zhí)行計(jì)劃。
設(shè)置為這種CBO模式以后,將保證消耗的所有計(jì)算資源最小,盡管有時(shí)查詢結(jié)束以后沒有結(jié)果返回。all_rows 的優(yōu)化模式更傾向于全表掃描,而不是全索引掃描和利用索引排序,因此這種優(yōu)化模式適合于數(shù)據(jù)查看實(shí)時(shí)性不是那么強(qiáng)的數(shù)據(jù)倉庫、決策支持系統(tǒng)和面向批處理的數(shù)據(jù)庫(batch-oriented databases)等。
Optimizer_mode=first_rows_N
N的值可以為1,10,100,1000,優(yōu)化器首先通過徹底分析第一個(gè)連接順序來估計(jì)返回行的總數(shù)目。這樣就可以知道查詢可能獲得的整個(gè)數(shù)據(jù)集的片段,并重新啟動(dòng)整個(gè)優(yōu)化過程,其目標(biāo)在于找到能夠以最小的資源消耗返回整個(gè)數(shù)據(jù)片段的執(zhí)行計(jì)劃。
Oracle 9i 對一些預(yù)期返回結(jié)果集的數(shù)據(jù)量小的SQL語句優(yōu)化模式進(jìn)行了加強(qiáng),增加了四個(gè)參數(shù)值:first_rows_1、first_rows_10、 first_rows_100、first_rows_1000。CBO通過first_rows_n 中的 n 值,決定了返回結(jié)果集數(shù)量的基數(shù),我們可能僅僅需要查詢結(jié)果集中的一部分,CBO就根據(jù)這樣的 n 值來決定是否使用索引掃描。
optimizer_mode = rule
基于規(guī)則的優(yōu)化器模式,RBO,是早期Oracle版本使用過的一種優(yōu)化模式。由于 RBO不支持自1994年Oracle版本的新特性,如 bitmap indexes,table partitions,function-based indexes等,所以在以后Oracle版本中已經(jīng)不再更新RBO,并且也不推薦用戶使用RBO這種優(yōu)化模式了。
“Oracle中使用optimizer_mode參數(shù)的意義”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
網(wǎng)頁名稱:Oracle中使用optimizer_mode參數(shù)的意義-創(chuàng)新互聯(lián)
本文地址:http://muchs.cn/article40/idieo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、網(wǎng)站設(shè)計(jì)、標(biāo)簽優(yōu)化、網(wǎng)站改版、域名注冊、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容