1. 程式人生 > >oracle體系結構總結 1.資料高速緩衝區(data buffer cache)2.redo log buffer

oracle體系結構總結 1.資料高速緩衝區(data buffer cache)2.redo log buffer

一.資料高速緩衝區(databuffer cache)

oracle使用LRU(least recently used)演算法管理buffer cache.即清楚最早沒有使用的資料塊

-------------------------------------------------------------------------------------------------------------------------------------------------

對於緩衝區的管理機制,有冷端和熱端的解釋。

HOT COLD
A B C D E F G H I J
假設新資料塊 K 將要被讀入,又沒有空閒位置,則 Oracle 會對冷端頭 J 塊進行判斷:
假設 J 被訪問次數為 1Oracle 將會認為 J 不是一個經常被訪問的塊(冷) ,則會將 J
塊踢出佇列,將 K 插入至 F 的位置,F 和其他塊右移:
HOT COLD
A B C D E K F G H I
假設新資料塊 L 將要被讀入,又沒有空閒位置,則 Oracle 會對冷端頭 I 塊進行判斷:
假設 I 被訪問次數為 5Oracle 將會認為 I 是一個經常被訪問的塊(熱) ,則會將 I 塊放
入熱端頭,A 和其他快右移如下圖所示:
HOT COLD
I A B C D E K F G H
這時,將對下一個冷端頭塊 H 進行判斷:
假設 H 被訪問次數為 1Oracle 將會認為 H 不是一個經常被訪問的塊(冷) ,則會將 H
塊踢出佇列,將 L 插入至 E 的位置,E 和其他塊右移:
HOT COLD
I A B C D L E K F G
但是這時,我們會發現。I 塊被放入熱端頭,經過漫長的時間,I 塊最終會被放到冷端
頭進行判斷;如果這段時間中,即使 I 沒有再被訪問過,I 的訪問次數也仍然是 5,這樣 I
將再次回到熱端頭,這樣就造成了死迴圈,I 永遠無法被踢出列表。
因此,當 I 被放到熱端頭的時候,訪問次數將會被清零。如果這段時間 I 被訪問多次,
則有機會回到熱端頭,否則,可能被踢出列表。


-------------------------------------------------------------------------------------------------------------------------------------------------------

buffer cache的大小管理

1.檢視

show parameter db_cache_size/db_recycle_cache_size/db_keep_cache_size...

2.修改

alter system set db_cache_size=500m;

3.清空

alter system flush buffer_cache;

二.重做日誌緩衝區(redo log buffer)

重做日誌緩衝區用來記錄對資料緩衝區資料進行的修改,可迴圈使用,當用戶進行dml操作或者ddl操作時,

會改變data buffer cache的相應緩衝區。在修改此部分之前,oracle會自動生成重做項,將這些緩衝區的變化記載到

redo log buffer,每條重做項記載了修改的時間、被修改的塊、修改位置及新資料。redo log buffer被迴圈使用,當redol og buffer填滿時,

資料庫將重做日誌緩衝區的內容寫入資料檔案。

redo log buffer 的大小由 Log_buffer初始換引數決定。

show parameter log buffer