關於oracle的緩衝區機制與HDFS中的edit logs的某些關聯性的思考

來源:互聯網
上載者:User

標籤:text   sql   重複   使用   log   lgwr   定時   通過   儲存   

可能大家會問,oracle和HDFS屬於不同情境的儲存系統,它們之間為什麼會有聯絡呢?確實,從技術本身來看,他們確實無關聯,但利用“整體學習”的思想,跳出技術本身,可以發現Oracle的緩衝區和HDFS的edit logs都是為瞭解決頻繁IO而出現的,可以解決因頻繁讀寫磁碟而導致效能低的問題。如所示:

 

一、Oracle的緩衝區機制

Oracle的緩衝區主要有兩種:資料庫緩衝區快取(data buffer cache,後面簡稱DB chche)和日誌緩衝區(redo log)(對oracle執行個體記憶體結構感興趣的同學可自行百度,此處不再過多介紹)。

1.資料庫緩衝區快取(DB Cache)

DB Cache是執行SQL的工作區域,使用者會話所有操作資料都是在此緩衝中進行,而不是直接操作磁碟。舉例來說,當執行select操作時,會先尋找DB Cache,如果找到,則直接返回,如果未找到,會再從磁碟載入資料到DB Cache中來,然後再返回。再舉個例子,當執行update操作時,其實也只是更新了DB Cache中的資料。如果DB Cache中資料和磁碟中資料不一致,則稱此資料為髒資料。

 那麼DB Cache的髒資料往磁碟中寫入的機制是怎樣的呢?Oracle中為此專門有一個資料庫寫入器的後台進程DBWn,會把DB Cache中的資料寫入到磁碟中,當出現以下情況之一時,DBWn會執行寫入磁碟操作:

1)沒有任何可用DB Cache;

2)髒資料過多; 

3)到達3秒的逾時時間; 

4)遇到checkpoint; 

可以看到,DBWn這樣寫入方式是極懶的,目的就是為了減少IO。

2.日誌緩衝區

日誌緩衝區是一塊小的記憶體地區,用於儲存重做記錄檔中的變更向量。當資料庫出現故障,導致大量髒資料未來得及寫入磁碟時,會根據重做記錄檔進行恢複(注意:重做redo和撤銷undo是有區別的,不要混淆)。與DBWn一樣,重做日誌緩衝區也有專門的後台進程LGWR,進行磁碟的寫入操作,寫入的時機有以下幾種情況:

1)commit操作(注意此commit,執行的是重做日誌的寫入磁碟操作,而不是DB Cache的寫入磁碟操作); 

2)日誌緩衝區已用超過1/3; 

3)DBWn要寫入髒資料(可以想想為什麼要這樣?原因就在於DBWn可能會將未提交的交易資料寫入到磁碟,為了保證這些已寫入磁碟的資料可以進行復原,所以必須也要把對應的重做日誌也寫入到磁碟中去,其實就是為了交易回復用的); 

綜上,這兩類緩衝區都是為了最大限度的減少IO而出現的機制。

二、HDFS的edit logs

 熟悉HDFS namenode啟動過程的同學們應該知道,在HDFS namenode啟動時,會把fsimage和edit logs載入到namenode的記憶體中,當namenode需要重啟時,會先把記憶體中的fsimage與edit logs合并寫入磁碟後,再重複執行上面的操作(此處edit logs可以認為是namenode的緩衝區,類似於oracle的緩衝區,只是一般不會輕易寫磁碟)。因此就會面臨如下的問題:

1)當edit logs檔案很大時,則namenode的重啟時間會過長; 

2)當namenode意外掛掉時,則eidt logs會丟失很多改動;

此時,Secondary namenode就出現了,可以通過定時查詢edit logs,然後將edit logs更新到fsimage,再由secondary namenode將更新後的fsimage寫入到namenode磁碟,以便下次重啟時使用。當然隨著Hadoop 2.0以後HA的出現,secondary namenode也被其它HA方案替代了,後面有機會再深入介紹。

綜上,oracle的緩衝區與hdfs中的edit logs類似,都是為了防止IO影響效能而出現的,只是寫入磁碟的機制不同,但思想可以認為是一致的。

關於oracle的緩衝區機制與HDFS中的edit logs的某些關聯性的思考

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.