文章詳情頁
跟蹤Oracle 9i的CPU和I/O使用代價
瀏覽:7日期:2023-11-13 17:12:16
當Oracle每一次新版本的發(fā)布,這一數(shù)據(jù)庫就會變得更加的受關(guān)注,尤其是它的外部環(huán)境。Oracle在Oracle服務(wù)器上設(shè)置了很多基于CPU個數(shù)的重要的初始化參數(shù),并且Oracle現(xiàn)在已經(jīng)更加地意識到CPU運行循環(huán)周期和I/O操作的使用代價。 基于成本的SQL優(yōu)化器(CBO)已經(jīng)被提高到考慮外部的影響,尤其是當為一個SQL查詢處理最佳執(zhí)行的時候。因為數(shù)據(jù)庫并非運行在一個不受其他因素影響的環(huán)境中,CBO將會成為影響每一次SQL操作的外部磁盤I/O代價和CPU運行周期代價的因素。這一重要的功能使得CBO成為全球多數(shù)成熟軟件產(chǎn)品中的其中一個。CBO的工作就是為任何SQL操作選擇一個最佳的執(zhí)行計劃。 根據(jù)Oracle文檔,對于I/O和CPU的使用代價評價如下: 使用代價 = (#SRds * sreadtim + #MRds * mreadtim + #CPUCycles ------------------------------------------------- cpuspeed ) ------------------------------------------------- sreadtim 這里: #SRDs – 單塊讀入的數(shù)目; #MRDs – 多塊讀入的數(shù)目; #CPUCycles – CPU運行周期的數(shù)目; sreadtim - 單塊讀入的時間; mreadtim – 多塊讀入的時間; cpuspeed - 每一秒的CPU運行次數(shù)。 請注重外部使用代價受到磁盤讀定的估計使用代價以及與每一次內(nèi)部操作相聯(lián)系的估計CPU代價的影響。Oracle保存有關(guān)SQL處理的許多成分代價的具體信息,并使用這些平均的代價來影響基于成本的SQL優(yōu)化器的選擇。以下是一些范例: 雜亂信號連接的代價──Oracle知道一個雜亂連接所消耗的RAM內(nèi)存的平均數(shù)量。 分類──Oracle為了執(zhí)行分類和集中操作而保持跟蹤RAM。 列表掃描代價──Oracle保存關(guān)于執(zhí)行一個多塊讀入需要時間的信息。 索引塊訪問代價──Oraclet知道引出一個單一的塊所需要的平均時間。 請注重這些使用代價的評價依據(jù)是不同的,這主要取決于你對Oracle優(yōu)化器的選擇。假如你具有一個帶有first_rows優(yōu)化器模式的OLTP系統(tǒng),CBO就能夠更快地返回行操作。另一方面,假如你使用的是數(shù)據(jù)倉庫的first_rows優(yōu)化器模式,CBO將會被這些外部因素嚴重影響,因為first_rows模式被設(shè)計以減少資源消耗 為了能夠完整地理解Oracle的外部使用代價,讓我們深入查閱這些新的外部影響和Oracle CBO如何使用外部使用代價。 CPU代價 現(xiàn)在CBO已經(jīng)能夠估計每一操作需要的機器運行周期的數(shù)量級,并影響執(zhí)行計劃計算的代價。與Oracle查詢有關(guān)的CPU使用代價取決于當前的服務(wù)器載入情況。CPU代價通常并不是很重要,除非是整個Oracle程序使用過多的CPU資源。 IO代價 CBO可以估計每一操作的物理塊讀入的數(shù)量級。I/O代價與物理數(shù)據(jù)塊讀入成正比。然而,CBO不具備緩沖目錄的優(yōu)先權(quán)利,也不能區(qū)別一個邏輯讀入和一個物理讀入。因為這些缺點,CBO無法識別數(shù)據(jù)塊是否已經(jīng)讀入RAM數(shù)據(jù)緩沖器。 并非完全的完美 注重到這些使用代價也是讀入數(shù)量的功能,并與讀入次數(shù)有關(guān),也注重到外部代價并沒有考慮到位于RAM數(shù)據(jù)緩沖器的數(shù)據(jù)塊的數(shù)量,但新的CBO發(fā)布版本應(yīng)該考慮到這一因素。 這里我們可以看到Oracle都使用了評測執(zhí)行計劃的CPU和I/O代價評估。相比于我們處理一些類似查詢而言,這一評估會變得更加復(fù)雜,因為類似查詢可以被許多并發(fā)的程序處理。
標簽:
Oracle
數(shù)據(jù)庫
排行榜
