軟件測試高性能Oracle數據庫 數據高速緩存解析

發表于:2009-10-21來源:作者:點擊數: 標簽:軟件測試數據庫oracleORACLEOracle
軟件測試高 性能 Oracle數據庫 數據高速緩存解析 Oracle數據庫 關鍵字:Oracle 數據庫 高速緩存 【賽迪網-IT技術報道】使用過Oracle數據庫的人都知道,Oracle數據庫的運行速度與效率,在同類數據庫中是名列前茅的,特別是對大量數據進行訪問時,更加有出色

軟件測試高性能Oracle數據庫 數據高速緩存解析 Oracle數據庫

關鍵字:Oracle 數據庫 高速緩存  

【賽迪網-IT技術報道】使用過Oracle數據庫的人都知道,Oracle數據庫的運行速度與效率,在同類數據庫中是名列前茅的,特別是對大量數據進行訪問時,更加有出色的表現。那么,Oracle數據庫是靠什么實現的呢?筆者下面將通過一系列的文章,向大家展示Oracle數據庫提供高性能運算的秘密。

Oracle數據庫作為復雜運算的首選數據庫,其首先是通過所謂的數據高速緩存來實現對數據的高速運算與操作的。

數據高速緩存跟操作系統的緩存類似,其存儲最近從數據文件中讀取的數據塊,其中的數據可以被所有的用戶所訪問。如當我們利用Select語句從數據庫中查詢員工信息的時候,其首先不是從數據文件中去查詢這個數據,而是從數據高速緩存中去查找,而沒有這個必要再去查詢磁盤中的數據文件了。只有在數據緩存中沒有這個數據的時候,數據庫才會從數據文件中去查詢。Oracle數據庫為什么要如此設計呢?這是由于數據庫在讀取數據的時候,讀取內存的速度比讀取磁盤的速度要快很多倍,所以這種機制可以提高數據的整體訪問效率。

雖然其他數據庫也有這方面的設計,但是,相對來說,Oracle數據庫比其他數據庫,在這方面有更加出色的表現。難怪Oracle數據庫在內存的要求上,比其他數據庫要高。若以稍微的代價犧牲一些內存,而換取更高的數據訪問性能。筆者認為還是值得的。下面我們就來看看,Oracle數據庫在數據高速緩存上有哪些特殊的表現。

一、 空閑緩存塊

當我們重新啟動數據庫后,系統就會為數據庫分配一些空閑的緩存塊??臻e緩存塊中是沒有任何數據的,他在那邊默默的等著別寫入記錄。當Oracle 數據庫從數據文件中讀取數據后,數據庫就會尋找是否有空閑的緩存塊,以便將數據寫入其中。

一般來說,數據庫在啟動的時候,就會在內存中預先分配這些緩存塊。所以,Oracle數據庫在啟動的時候,會占用比較多的內存。但是,這可以免去在實際需要時向內存申請的時間。所以,有時候Oracle數據庫雖然已啟動,內存的占用率就很高,但是,其后續仍然可以正常運行的原因。而其他數據庫雖然剛啟動的時候內存占用率不是很高,但是,但系統內存到達80%以上時,在進行數據處理就會受到明顯的影響。

所以,當我們利用SELECT語句從數據庫文件中讀取文件的時候,數據庫首先會尋找是否有空閑的緩存。

二、命中緩存塊

當SELECT語句先從數據庫文件中讀取數據后,會把取得的數據放入到這個命中緩存塊中。也就是說,當我們利用查詢語句從數據庫查詢處員工信息后,這個信息就會被保存在高速緩存中。直道高速緩存消耗完畢等原因,這個空間才會被釋放。如此的話,下次用戶在查詢員工信息的時候,就不需要從數據庫文件中再次查詢相關信息,而直接從數據高速緩存中提取數據,從而提高數據庫的訪問效率。

另外要注意的一個問題是,命中緩存塊中的數據不會被寫入數據文件。確實,這個命中緩存塊中的數據沒有被更改,其當然也不會被寫入數據庫文件中。

三、臟緩存塊

當我們利用SELECT查詢語句把員工信息的數據查詢出來后,數據庫會把這個數據所存儲的空緩存塊做標記,表示該緩存塊已經存有數據,使命中緩存塊。此時,我們若在利用數據更新語句UPDATE對其中某條記錄進行更新時,如要把張三的名字改為張四。運行UPDATE語句后,數據庫也首先從高速緩存中查找是否有這條記錄,若存在這條記錄的話,就直接更改這條記錄,并且把該緩存塊標記為贓緩存塊。如此的話,就可以保持數據的一致性。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97