亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        淺析Oracle數(shù)據(jù)庫優(yōu)化器

        2013-12-31 00:00:00王學(xué)成
        2013年17期

        摘要:隨著數(shù)據(jù)庫規(guī)模的不斷擴大,數(shù)據(jù)庫系統(tǒng)的性能問題也越來越突出,數(shù)據(jù)庫應(yīng)用系統(tǒng)能否正常、高效地運行倍受關(guān)注,數(shù)據(jù)庫優(yōu)化技術(shù)方法的探索具有非常重要的意義。本文主要通過介紹Oracle數(shù)據(jù)庫優(yōu)化器的應(yīng)用,了解一種Oracle數(shù)據(jù)庫的SQL 分析和執(zhí)行的優(yōu)化工具。

        關(guān)鍵詞:數(shù)據(jù)庫;優(yōu)化器

        在現(xiàn)代信息技術(shù)的帶動下,數(shù)據(jù)庫規(guī)模不斷的擴大,用戶數(shù)量的增加,數(shù)據(jù)庫應(yīng)用系統(tǒng)的響應(yīng)速度下降,性能問題越來越突出。為了改善系統(tǒng)的性能,數(shù)據(jù)庫系統(tǒng)的性能調(diào)整與優(yōu)化對于整個系統(tǒng)的正常運行起著至關(guān)重要的作用。

        一、Oracle數(shù)據(jù)庫的查詢過程

        Oracle數(shù)據(jù)庫應(yīng)用系統(tǒng)通過SQL(Structured Query Language)語言與數(shù)據(jù)庫進行通信,數(shù)據(jù)庫管理系統(tǒng)通過執(zhí)行用戶提交SQL語句完成查詢過程。

        (1)解析是檢查SQL語句的語法和語義,最終生成SQL語句的執(zhí)行計劃,并將SQL語句和執(zhí)行計劃存放到共享池中。(2)執(zhí)行(Execute)是指服務(wù)器進程按照SQL語句執(zhí)行計劃執(zhí)行SQL語句。(3)提取數(shù)據(jù)(fetch)是指將被選擇行數(shù)據(jù)返回到客戶端。

        二、Oracle優(yōu)化器(Optimizer)

        Oracle優(yōu)化器是Oracle在執(zhí)行SQL之前分析語句的工具。它負責(zé)指定SQL的執(zhí)行計劃,也就是它負責(zé)保證 SQL執(zhí)行的效率最高。這些因素直接決定SQL的執(zhí)行效率,所以優(yōu)化器是 SQL 執(zhí)行的核心,它做出的執(zhí)行計劃好壞,直接決定著SQL的執(zhí)行效率。

        Oracle的優(yōu)化器有兩種優(yōu)化方式:

        * RBO(Rule-Based Optimization): 基于規(guī)則的優(yōu)化器

        在Oracle8i 之前,Oracle使用的是RBO的優(yōu)化器,它的執(zhí)行機制非常簡單,就是在優(yōu)化器里面嵌入若干種規(guī)則,執(zhí)行的 SQL語句符合哪種規(guī)則(RANK),則按照規(guī)則(RANK)制定出相應(yīng)的執(zhí)行計劃。由于RBO 只是簡單的去匹配Rank,所以它的執(zhí)行計劃有時并不是最佳的。因此數(shù)據(jù)庫的查詢性能受到影響。

        * CBO(Cost-Based Optimization): 基于代價的優(yōu)化器

        從Oracle8i 開始, Oracle引入了CBO,它的思路是讓Oracle獲取所有執(zhí)行計劃相關(guān)的信息,通過對這些信息做計算分析,最后得出一個代價最小的執(zhí)行計劃作為最終的執(zhí)行計劃。CBO是一種比RBO更理性化的優(yōu)化器。從Oracle10g開始,Oracle已經(jīng)徹底丟棄了RBO。 即使在表,索引沒有被分析的時候,Oracle依然會使用CBO。此時,Oracle 會使用一種叫做動態(tài)采樣的技術(shù),在分析SQL的時候,動態(tài)的收集表,索引上的一些數(shù)據(jù)塊,使用這些數(shù)據(jù)塊的信息及字典表中關(guān)于這些對象的信息來計算出執(zhí)行計劃的代價,從而挑出最優(yōu)的執(zhí)行計劃。

        CPU 代價(Cost)的計算方式現(xiàn)在默認為 CPU+I/O 兩者之和??赏ㄟ^DBMS_XPLAN.DISPLAY_CURSOR 觀察更為詳細的執(zhí)行計劃。優(yōu)化器在判斷是否用這種方式時,主要參照的是表及索引的統(tǒng)計信息。統(tǒng)計信息給出表的大小、有少行、每行的長度等信息。這些統(tǒng)計信息起初在庫內(nèi)是沒有的,是做analyze后才出現(xiàn)的,很多時候,過期統(tǒng)計信息會令優(yōu)化器做出一個錯誤的執(zhí)行計劃,因此應(yīng)及時更新這些信息。CBO應(yīng)該自動收集,實際卻不然,有時候在CBO情況下,還必須定期對大表進行分析。

        三、Oracle優(yōu)化器的模式

        1.CHOOSE

        這個值表示SQL語句既可以使用RBO優(yōu)化器也可以使用CBO優(yōu)化器,而決定該SQL到底使用哪個優(yōu)化器的唯一因素是,所訪問的對象是否存在統(tǒng)計信息。如果所訪問的全部對象都存在統(tǒng)計信息,則使用CBO優(yōu)化器優(yōu)化SQL;如果只有部分對象存在統(tǒng)計信息,也仍然使用CBO優(yōu)化器優(yōu)化SQL,優(yōu)化器會為不存在統(tǒng)計信息對象依據(jù)一些內(nèi)在信息來生成統(tǒng)計信息,只是這樣生成的統(tǒng)計信息可能不準確,而導(dǎo)致產(chǎn)生不理想的執(zhí)行計劃;如果全部對象都無統(tǒng)計信息,則使用RBO來優(yōu)化該SQL語句。此模式僅在Oracle9i及之前版本中被支持,Oracle10g已經(jīng)廢除。Oracle8i及Oracle9i中為默認值。

        2.RULE

        不論是否存在統(tǒng)計信息,都將使用RBO優(yōu)化器來優(yōu)化SQL。僅在Oracle9i及之前版本中被支持,Oracle10g已經(jīng)廢除。

        3.FIRST_ROWS_n

        不論是否存在統(tǒng)計信息,都使用CBO優(yōu)化器,并以最快的速度返回前n行記錄。當(dāng)CBO 的優(yōu)化模式設(shè)置為FIRST_ROWS(n)時,Oracle在執(zhí)行SQL時,優(yōu)先考慮將結(jié)果集中的前 n條記錄以最快的速度反饋回來。優(yōu)化器并不需要同時將所有符合條件的結(jié)果返回,用戶也不需要。這時,CBO將考慮用一種最快的返回前n條記錄的執(zhí)行計劃,這種執(zhí)行計劃對于SQL的整體執(zhí)行時間也不是最快的,但是在返回前數(shù)據(jù)量較少的記錄上,確實最快的。

        4. FIRST_ROWS

        CBO盡可能快速的返回結(jié)果集的前面少數(shù)行記錄。不論是否存在統(tǒng)計信息,都使用CBO優(yōu)化器,F(xiàn)IRST_ROWS導(dǎo)致CBO使用“試探法”來產(chǎn)生執(zhí)行計劃,這種方式其成本可能會稍大一些。

        5.ALL_ROWS

        不論是否存在統(tǒng)計信息,都使用CBO優(yōu)化器,且把CBO的優(yōu)化目標(biāo)設(shè)定為“最小的成本”。在Oracle 10g中為默認值。當(dāng)CBO 模式設(shè)置為ALL_ROWS 時, Oracle會用最快的速度將SQL執(zhí)行完畢,將結(jié)果集全部返回,它和FIRST_ROWS(n)的區(qū)別在于,ALL_ROWS強調(diào)以最快的速度將SQL執(zhí)行完畢,并將所有的結(jié)果集反饋回來,而FIRST_ROWS(n)則側(cè)重于返回前 n條記錄的執(zhí)行時間。ALL_ROWS 在OLAP 系統(tǒng)中使用得比較多,它用最快的速度獲得 SQL執(zhí)行的最后一條記錄,而不是前 N 條記錄。

        四、在 CBO下寫 SQL語句的注意事項

        1.使用CBO 時,必須保證為表和相關(guān)的索引搜集足夠的統(tǒng)計數(shù)據(jù)。

        2.使用CBO 時,要注意看采用了哪種類型的表連接方式。

        3.使用CBO 時,要注意被索引的字段的值的數(shù)據(jù)分布,會影響SQL語句的執(zhí)行計劃。

        4.使用CBO 時,SQL語句“FROM” 子句后面的表,必須全部使用ANALYZE 命令分析過,如果“FROM”子句后面的是視圖,則此視圖的基礎(chǔ)表,也必須全部使用ANALYZE 命令分析過;否則,ORACLE 會在執(zhí)行此SQL語句之前,自動進行ANALYZE 命令分析,這會極大導(dǎo)致SQL語句執(zhí)行極其緩慢。

        也還有其他需要的注意事項,在工作中要特別留心哦。(作者單位:西安電子科技大學(xué)計算機學(xué)院)

        參考文獻:

        [1]文平著.Oracle數(shù)據(jù)庫性能優(yōu)化的藝術(shù)[M].北京: 機械工業(yè)出版社,2012.7

        [2][澳] Guy Harrison 著 鄭勇斌,胡怡文,童家旺, 譯等. Oracle性能優(yōu)化求生指南[M].北京: 人民郵電出版社,2012.9

        [3]楊小艷. Oracle數(shù)據(jù)庫查詢優(yōu)化方法研究[J].計算機與現(xiàn)代化,2008, 152: 4-7.

        国产亚洲日本精品无码| 国产伦奸在线播放免费| 色播视频在线观看麻豆| av免费网址在线观看| 日韩好片一区二区在线看| 伊人亚洲综合网色AV另类| 国产视频一区二区三区在线看| 中文字幕乱码亚洲无限码| 亚洲国产成人精品无码区二本| 欧美激情二区| 99久久国产一区二区三区| 一区二区三区国产内射| 免费无码中文字幕a级毛片| 亚洲中文字幕无码中字| 国产一区二区三区观看视频| 一本色道久在线综合色| 国产肉体xxxx裸体784大胆| 色两性网欧美| 日本变态网址中国字幕| 日本一区三区三区在线观看 | 国产激情视频在线观看首页 | 日韩一区二区不卡av| 日本久久视频在线观看 | 成人免费一区二区三区| 中文字幕无码日韩欧毛| 少妇性l交大片免费1一少| 国产老熟妇精品观看| 夜夜嗨av一区二区三区| 国产国拍亚洲精品永久69| 日本美女中文字幕第一区| 成人乱码一区二区三区av| 欧美在线视频免费观看| 中文字幕亚洲精品第一页| 久久精品国产亚洲av超清| 国产成年无码v片在线| 久久99精品久久久久九色 | 熟女性饥渴一区二区三区| 国产白丝网站精品污在线入口| 久久青青草原亚洲av| 无码人妻久久一区二区三区蜜桃| 综合三区后入内射国产馆|