1、概念: 日誌緩衝區是小型的、用於短期儲存將寫入到磁碟上的重做日誌的變更向量的臨時區域。"變更向量"是應用於某些物件的修改,執行DML語句會生成應用於資料的變更向量。有了重做日誌,資料庫就可以確保資料永不丟失:每當資料塊發生更改時,都會將應用於塊的變更向量寫到重做日誌,如果需要還原資料檔案,則透過重做日誌,可以將變更向量提取並應用於資料檔案備份。 2、性質 會話伺服器程序不將重做記錄直接寫入重做日誌檔案,否則,每當執行DML語句時,會話將不得不等待磁碟I/O操作完成。相反,會話將重做記錄寫入記憶體中的日誌緩衝區。這樣做的速度將遠比寫入磁碟快。此後,日誌緩衝區(可能包含交替的多個會話的變更向量)寫出到重做日誌檔案。因此,日誌緩衝區對磁碟的一次寫入是來自多個事務的一批變更向量。即使如此,日誌緩衝區中的變更向量也是接近實時地寫入磁碟,當會話發出COMMIT語句時,會實時執行日誌緩衝區寫操作。寫操作由日誌寫入器後臺程序(LGWR)完成。 3、特性: 與其他記憶體結構相比,日誌緩衝區較小,因為它是一個非常短暫的儲存區域。將變更向量插入其中,並幾乎實時地使其流向磁碟。日誌緩衝區最多不必超過數MB,的確,如果將其設定為大於預設值,就會對效能產生極壞的影響。預設值由Oracle伺服器確定,而且取決於伺服器節點中的CPU數量。 4、如何設定 不可設定小於預設值的日誌緩衝區。如果嘗試這麼做,則日誌緩衝區一定會被設定為預設大小。可以建立一個大於預設值的緩衝區,但通常不提倡這樣做。問題在於,當發出COMMIT語句時,一部分提交處理涉及將日誌緩衝區內容寫入磁碟上的重做日誌檔案。寫操作實時執行,在其進行過程中,發出COMMIT的會話將掛起。提交處理是Oracle體系結構的關鍵部分。要確保提交的事務永不丟失,那麼,在快取中的資料塊發生更改(意味著事務已完成)而且將變更向量寫入磁碟上的重做日誌(如有必要,可以恢復事務)前,不能將完成提交的訊息返回給會話。大日誌緩衝區意味著:在發出COMMIT語句時,需要寫入的內容更多,在發出完成提交訊息以及會話恢復工作之前,需要耗費更長的時間。 ①日誌記錄器緩衝區大小:日誌主要是用於給工程師們反饋使用資訊與記錄便於分析問題來源的。(開發時使用的)對使用者無用。 ②從理論上來說,在一定數值內越大越好。(因為它決定了你能開啟的應用層的數目) ③由於使用者本身不是經常產生上傳日誌,所以沒必要調節至最低。 就某些應用程式而言,有必要將日誌緩衝區大小設定為高於預設值,但通常使用預設日誌緩衝區開始調整。 日誌緩衝區在啟動例項時分配,如果不重新啟動例項,就不能在隨後調整其大小。它是一個迴圈緩衝區。在伺服器程序向其中寫入變更向量時,當前的寫地址會來回移動。日誌寫入器程序以批處理方式寫出向量,此時,其佔用的空間將變得可用,並可由更多的變更向量覆蓋。在活動高峰時刻,變更向量的生成速度可能高於日誌寫入器程序的寫出速度。如果發生這種情況,在日誌寫入器清理緩衝區時,所有的DML活動都將停止數毫秒。 在Oracle體系結構中,將日誌緩衝區轉儲到磁碟是基本瓶頸之一。DML的速度不能超過LGWR將變更向量轉儲到聯機重做日誌檔案的速度。 如果重做生成是限制資料庫效能的因素,唯一的選項是使用RAC。在RAC資料庫中,每個例項都有自己的日誌緩衝區和自己的LGWR。這是將重做資料並行寫入磁碟的唯一方法。 所以對於日誌記錄器使用者使用預設設定即可。如在裝置高配置情況下,可調高預設值甚至最大值以適應使用者個性化需設。
1、概念: 日誌緩衝區是小型的、用於短期儲存將寫入到磁碟上的重做日誌的變更向量的臨時區域。"變更向量"是應用於某些物件的修改,執行DML語句會生成應用於資料的變更向量。有了重做日誌,資料庫就可以確保資料永不丟失:每當資料塊發生更改時,都會將應用於塊的變更向量寫到重做日誌,如果需要還原資料檔案,則透過重做日誌,可以將變更向量提取並應用於資料檔案備份。 2、性質 會話伺服器程序不將重做記錄直接寫入重做日誌檔案,否則,每當執行DML語句時,會話將不得不等待磁碟I/O操作完成。相反,會話將重做記錄寫入記憶體中的日誌緩衝區。這樣做的速度將遠比寫入磁碟快。此後,日誌緩衝區(可能包含交替的多個會話的變更向量)寫出到重做日誌檔案。因此,日誌緩衝區對磁碟的一次寫入是來自多個事務的一批變更向量。即使如此,日誌緩衝區中的變更向量也是接近實時地寫入磁碟,當會話發出COMMIT語句時,會實時執行日誌緩衝區寫操作。寫操作由日誌寫入器後臺程序(LGWR)完成。 3、特性: 與其他記憶體結構相比,日誌緩衝區較小,因為它是一個非常短暫的儲存區域。將變更向量插入其中,並幾乎實時地使其流向磁碟。日誌緩衝區最多不必超過數MB,的確,如果將其設定為大於預設值,就會對效能產生極壞的影響。預設值由Oracle伺服器確定,而且取決於伺服器節點中的CPU數量。 4、如何設定 不可設定小於預設值的日誌緩衝區。如果嘗試這麼做,則日誌緩衝區一定會被設定為預設大小。可以建立一個大於預設值的緩衝區,但通常不提倡這樣做。問題在於,當發出COMMIT語句時,一部分提交處理涉及將日誌緩衝區內容寫入磁碟上的重做日誌檔案。寫操作實時執行,在其進行過程中,發出COMMIT的會話將掛起。提交處理是Oracle體系結構的關鍵部分。要確保提交的事務永不丟失,那麼,在快取中的資料塊發生更改(意味著事務已完成)而且將變更向量寫入磁碟上的重做日誌(如有必要,可以恢復事務)前,不能將完成提交的訊息返回給會話。大日誌緩衝區意味著:在發出COMMIT語句時,需要寫入的內容更多,在發出完成提交訊息以及會話恢復工作之前,需要耗費更長的時間。 ①日誌記錄器緩衝區大小:日誌主要是用於給工程師們反饋使用資訊與記錄便於分析問題來源的。(開發時使用的)對使用者無用。 ②從理論上來說,在一定數值內越大越好。(因為它決定了你能開啟的應用層的數目) ③由於使用者本身不是經常產生上傳日誌,所以沒必要調節至最低。 就某些應用程式而言,有必要將日誌緩衝區大小設定為高於預設值,但通常使用預設日誌緩衝區開始調整。 日誌緩衝區在啟動例項時分配,如果不重新啟動例項,就不能在隨後調整其大小。它是一個迴圈緩衝區。在伺服器程序向其中寫入變更向量時,當前的寫地址會來回移動。日誌寫入器程序以批處理方式寫出向量,此時,其佔用的空間將變得可用,並可由更多的變更向量覆蓋。在活動高峰時刻,變更向量的生成速度可能高於日誌寫入器程序的寫出速度。如果發生這種情況,在日誌寫入器清理緩衝區時,所有的DML活動都將停止數毫秒。 在Oracle體系結構中,將日誌緩衝區轉儲到磁碟是基本瓶頸之一。DML的速度不能超過LGWR將變更向量轉儲到聯機重做日誌檔案的速度。 如果重做生成是限制資料庫效能的因素,唯一的選項是使用RAC。在RAC資料庫中,每個例項都有自己的日誌緩衝區和自己的LGWR。這是將重做資料並行寫入磁碟的唯一方法。 所以對於日誌記錄器使用者使用預設設定即可。如在裝置高配置情況下,可調高預設值甚至最大值以適應使用者個性化需設。