Oracle資料庫高效能祕密之資料快取記憶體
使用過Oracle資料庫的人都知道,Oracle資料庫的執行速度與效率,在同類資料庫中是名列前茅的,特別是對大量資料進行訪問時,更加有出色的表現。那麼,Oracle資料庫是靠什麼實現的呢?筆者下面將通過一系列的文章,向大家展示Oracle資料庫提供高效能運算的祕密。
Oracle資料庫作為複雜運算的首選資料庫,其首先是通過所謂的資料快取記憶體來實現對資料的高速運算與操作的。
資料快取記憶體跟作業系統的快取類似,其儲存最近從資料檔案中讀取的資料塊,其中的資料可以被所有的使用者所訪問。如當我們利用Select語句從資料庫中查詢員工資訊的時候,其首先不是從資料檔案中去查詢這個資料,而是從資料快取記憶體中去查詢,而沒有這個必要再去查詢磁碟中的資料檔案了。只有在資料快取中沒有這個資料的時候,資料庫才會從資料檔案中去查詢。Oracle資料庫為什麼要如此設計呢?這是由於資料庫在讀取資料的時候,讀取記憶體的速度比讀取磁碟的速度要快很多倍,所以這種機制可以提高資料的整體訪問效率。
雖然其他資料庫也有這方面的設計,但是,相對來說,Oracle資料庫比其他資料庫,在這方面有更加出色的表現。難怪Oracle資料庫在記憶體的要求上,比其他資料庫要高。若以稍微的代價犧牲一些記憶體,而換取更高的資料訪問效能。筆者認為還是值得的。下面我們就來看看,Oracle資料庫在資料快取記憶體上有哪些特殊的表現。
一、 空閒快取塊。
當我們重新啟動資料庫後,系統就會為資料庫分配一些空閒的快取塊。空閒快取塊中是沒有任何資料的,他在那邊默默的等著別寫入記錄。當Oracle 資料庫從資料檔案中讀取資料後,資料庫就會尋找是否有空閒的快取塊,以便將資料寫入其中。
一般來說,資料庫在啟動的時候,就會在記憶體中預先分配這些快取塊。所以,Oracle資料庫在啟動的時候,會佔用比較多的記憶體。但是,這可以免去在實際需要時向記憶體申請的時間。所以,有時候Oracle資料庫雖然已啟動,記憶體的佔用率就很高,但是,其後續仍然可以正常執行的原因。而其他資料庫雖然剛啟動的時候記憶體佔用率不是很高,但是,但系統記憶體到達80%以上時,在進行資料處理就會受到明顯的影響。
所以,當我們利用SELECT語句從資料庫檔案中讀取檔案的時候,資料庫首先會尋找是否有空閒的快取。
二、 命中快取塊。
當SELECT語句先從資料庫檔案中讀取資料後,會把取得的資料放入到這個命中快取塊中。也就是說,當我們利用查詢語句從資料庫查詢處員工資訊後,這個資訊就會被儲存在快取記憶體中。直道快取記憶體消耗完畢等原因,這個空間才會被釋放。如此的話,下次使用者在查詢員工資訊的時候,就不需要從資料庫檔案中再次查詢相關資訊,而直接從資料快取記憶體中提取資料,從而提高資料庫的訪問效率。
另外要注意的一個問題是,命中快取塊中的資料不會被寫入資料檔案。確實,這個命中快取塊中的資料沒有被更改,其當然也不會被寫入資料庫檔案中。
Oracle資料庫作為複雜運算的首選資料庫,其首先是通過所謂的資料快取記憶體來實現對資料的高速運算與操作的。
資料快取記憶體跟作業系統的快取類似,其儲存最近從資料檔案中讀取的資料塊,其中的資料可以被所有的使用者所訪問。如當我們利用Select語句從資料庫中查詢員工資訊的時候,其首先不是從資料檔案中去查詢這個資料,而是從資料快取記憶體中去查詢,而沒有這個必要再去查詢磁碟中的資料檔案了。只有在資料快取中沒有這個資料的時候,資料庫才會從資料檔案中去查詢。Oracle資料庫為什麼要如此設計呢?這是由於資料庫在讀取資料的時候,讀取記憶體的速度比讀取磁碟的速度要快很多倍,所以這種機制可以提高資料的整體訪問效率。
雖然其他資料庫也有這方面的設計,但是,相對來說,Oracle資料庫比其他資料庫,在這方面有更加出色的表現。難怪Oracle資料庫在記憶體的要求上,比其他資料庫要高。若以稍微的代價犧牲一些記憶體,而換取更高的資料訪問效能。筆者認為還是值得的。下面我們就來看看,Oracle資料庫在資料快取記憶體上有哪些特殊的表現。
一、 空閒快取塊。
當我們重新啟動資料庫後,系統就會為資料庫分配一些空閒的快取塊。空閒快取塊中是沒有任何資料的,他在那邊默默的等著別寫入記錄。當Oracle 資料庫從資料檔案中讀取資料後,資料庫就會尋找是否有空閒的快取塊,以便將資料寫入其中。
一般來說,資料庫在啟動的時候,就會在記憶體中預先分配這些快取塊。所以,Oracle資料庫在啟動的時候,會佔用比較多的記憶體。但是,這可以免去在實際需要時向記憶體申請的時間。所以,有時候Oracle資料庫雖然已啟動,記憶體的佔用率就很高,但是,其後續仍然可以正常執行的原因。而其他資料庫雖然剛啟動的時候記憶體佔用率不是很高,但是,但系統記憶體到達80%以上時,在進行資料處理就會受到明顯的影響。
所以,當我們利用SELECT語句從資料庫檔案中讀取檔案的時候,資料庫首先會尋找是否有空閒的快取。
二、 命中快取塊。
當SELECT語句先從資料庫檔案中讀取資料後,會把取得的資料放入到這個命中快取塊中。也就是說,當我們利用查詢語句從資料庫查詢處員工資訊後,這個資訊就會被儲存在快取記憶體中。直道快取記憶體消耗完畢等原因,這個空間才會被釋放。如此的話,下次使用者在查詢員工資訊的時候,就不需要從資料庫檔案中再次查詢相關資訊,而直接從資料快取記憶體中提取資料,從而提高資料庫的訪問效率。
另外要注意的一個問題是,命中快取塊中的資料不會被寫入資料檔案。確實,這個命中快取塊中的資料沒有被更改,其當然也不會被寫入資料庫檔案中。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24558279/viewspace-746183/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle資料庫高效能秘密之資料快取記憶體Oracle資料庫快取記憶體
- 記憶體資料庫快取介紹記憶體資料庫快取
- CQengine高效能記憶體資料快取查詢框架記憶體快取框架
- 記憶體資料庫快取介紹總結記憶體資料庫快取
- 揭祕RedisGraph: Redis內嵌高效能記憶體圖資料庫Redis記憶體資料庫
- 記憶體資料庫快取使用者手冊記憶體資料庫快取
- 記憶體資料庫快取使用者手冊總結記憶體資料庫快取
- 記憶體資料庫記憶體資料庫
- 高效能記憶體快取 ristretto記憶體快取
- Oracle - 資料庫的記憶體結構Oracle資料庫記憶體
- Oracle - 資料庫的記憶體調整Oracle資料庫記憶體
- 【大頁記憶體】Oracle資料庫配置大頁記憶體記憶體Oracle資料庫
- Mongodb記憶體資料庫MongoDB記憶體資料庫
- oracle資料庫記憶體分配(sga和pga)Oracle資料庫記憶體
- AIX 下oracle 資料庫記憶體優化AIOracle資料庫記憶體優化
- 【記憶體資料庫】TimesTen記憶體資料庫
- memcached資料庫快取資料庫快取
- 從Oracle資料庫故障到AIX記憶體管理Oracle資料庫AI記憶體
- Oracle資料庫記憶體監控及意義Oracle資料庫記憶體
- Python記憶體資料庫/引擎Python記憶體資料庫
- 構建個人記憶體資料庫記憶體資料庫
- 記憶體資料庫如何發揮記憶體優勢?記憶體資料庫
- 如何配置oracle資料庫伺服器的記憶體Oracle資料庫伺服器記憶體
- (轉)快閃記憶體表空間 VS 資料庫Flash Cache記憶體資料庫
- Android記憶體優化之記憶體快取Android記憶體優化快取
- Oracle12c中效能最佳化增強新特性之資料庫智慧快閃記憶體Oracle資料庫記憶體
- 將altibase記憶體庫的表匯出到oracle資料庫記憶體Oracle資料庫
- 磁碟資料庫與記憶體資料庫的特點比較資料庫記憶體
- sqlserver讀取oracle資料庫資料SQLServerOracle資料庫
- Aerospike 分散式記憶體資料庫 筆記ROS分散式記憶體資料庫筆記
- 瀚高資料庫記憶體結構資料庫記憶體
- 記憶體資料庫發展歷程記憶體資料庫
- 主要測試記憶體和資料庫記憶體資料庫
- 記憶體資料庫TimesTen介紹記憶體資料庫
- 揭祕Oracle資料庫truncate原理Oracle資料庫
- 資料庫新兵:分散式實時分析記憶體資料庫eSight資料庫分散式記憶體
- 快速搭建Redis快取資料庫Redis快取資料庫
- 微信小程式之資料快取微信小程式快取