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