LGnn 程式介紹(oracle 19c)

sjw1933發表於2023-03-14

 

一、說明

在 Oracle 資料庫中,LGWR通常會影響一個資料庫的效能,在12C之前,不支援重做日誌的併發寫,12C之後,引入了LGnn 程式,支援了併發寫,用於實際寫入REDO資料。

 

二、詳細介紹

2.1什麼是LGnn 程式

在Oracle資料庫中,LGnn(Log Writer Null)程式是由LGWR(Log Writer)程式動態建立的輔助程式。這些程式幫助LGWR程式完成它的任務,當LGWR程式需要等待某些操作完成時,如等待檢查點完成或等待I/O操作完成,LGnn程式會接管LGWR程式的任務,以避免LGWR程式因為等待時間過長而影響系統效能。LGnn程式的命名規則是由兩個部分組成的。第一個部分是“LG”,代表“Log Writer”的縮寫,因為這些程式與Log Writer程式密切相關。第二個部分是一個由兩個字母組成的程式碼,例如“LGWR”、“LGER”等等,這些程式碼通常是隨機生成的,可以根據需要建立多個LGnn程式。

 

2.2 LGnn程式的任務

LGnn 程式的主要任務是將記憶體中的重做日誌緩衝區中的資料寫入線上重做日誌檔案中。它負責將來自其他程式的重做日誌緩衝區中的資料寫入磁碟,以確保資料永續性。此外,LGnn程式還定期從線上重做日誌檔案中讀取重做日誌記錄,並將它們寫入磁碟中的歸檔重做日誌檔案中,以便進行備份和恢復操作。

 

2.3 LGWR程式和LG nn 程式的關係

在Oracle資料庫中,LGWR程式主要負責寫日誌檔案,而LGnn程式則是LGWR程式的輔助程式。當一個髒塊需要被寫入磁碟的日誌檔案時,LGWR程式會通知其中一個空閒的LGnn程式來完成這個操作。因此,LGnn程式可以看作是LGWR程式的代理人,它們之間透過共享記憶體來進行通訊。

 

2.4 LGnn程式的數量

在Oracle資料庫中,可以配置LGWR程式使用的LGnn程式的數量,一般情況下,建議將LGnn程式的數量配置為CPU核心數的一半左右。在實際的應用中,如果LGnn程式的數量太少,可能會導致LGWR程式的效能瓶頸,從而影響整個系統的效能;如果LGnn程式的數量太多,可能會導致系統的記憶體資源被消耗殆盡,從而引起系統的崩潰。因此,需要根據實際情況來合理配置LGnn程式的數量。

 

2.5 LGnn的配置和監視

查詢當前LGnn程式的數量:

SELECT COUNT(*) FROM v$bgprocess WHERE name LIKE 'LG%';

 

使用以下查詢來監視當前LGnn程式的活動情況:

SELECT name, active FROM v$bgprocess WHERE name LIKE 'LG%';

 

調整以下引數來調整LGnn程式的行為:

LOG_CHECKPOINT_INTERVAL :指定LGnn程式執行檢查點操作的時間間隔(以秒為單位)。檢查點是指LGnn程式將所有未寫入磁碟的髒緩衝區刷寫到磁碟的操作。預設值為60秒。

 

LOG_CHECKPOINT_TIMEOUT :指定LGnn程式執行檢查點操作的超時時間(以秒為單位)。如果LGnn程式無法在超時時間內完成檢查點操作,則會產生警告。預設值為30秒。

 

LOG_BUFFER :指定LGnn程式用於快取日誌記錄的記憶體大小(以位元組為單位)。預設值為1MB。

具體調整方式:

ALTER SYSTEM SET LOG_CHECKPOINT_INTERVAL = <value>; 
ALTER SYSTEM SET LOG_CHECKPOINT_TIMEOUT = <value>; 
ALTER SYSTEM SET LOG_BUFFER = <value>;

LGnn 程式是Oracle資料庫的重要元件之一,它負責確保資料的永續性和一致性。瞭解LGnn程式的工作原理和如何配置和監視它,有助於提高系統的效能和可靠性。

 

2.6 LGnn程式的併發寫

是指多個LGnn程式同時將重做日誌記錄寫入磁碟上的線上重做日誌檔案。在Oracle資料庫中,可以透過配置多個LGnn程式來提高併發效能,從而實現更高的寫入吞吐量。

多個LGnn程式可以同時訪問同一個線上重做日誌檔案,這種併發寫可以提高寫入效能,特別是在高負載情況下。例如,當一個LGnn程式正在寫入重做日誌記錄時,另一個LGnn程式可以同時開始寫入新的重做日誌記錄,從而避免了單個程式的瓶頸問題。

為了實現LGnn程式的併發寫,需要在資料庫引數中設定LOG_PARALLELISM引數的值,以指定LGnn程式的數量。通常建議將LOG_PARALLELISM設定為CPU核心數的一半或更少,以避免過多的LGnn程式導致效能下降。

另外,在實現LGnn程式的併發寫時,還需要考慮一些重要的因素。例如,必須確保線上重做日誌檔案的大小和數量足夠大,以避免LGnn程式之間的競爭。此外,還需要考慮磁碟和I/O效能,以確保多個LGnn程式可以同時高效地寫入重做日誌檔案。

總之,LGnn程式的併發寫是一種最佳化資料庫效能的有效方法,可以透過配置多個LGnn程式來提高寫入吞吐量和併發效能。但是,在實現併發寫時,需要注意一些重要的因素,以確保系統穩定和可靠。

 

 

 

三、總結

LGnn  程式是 Oracle 資料庫中非常重要的一個程式,主要負責將快取中的資料寫入磁碟,確保資料持久化。在Oracle 19C 中,可以透過一系列引數來設定 LGnn 程式的行為和效能。合理地設定這些引數可以提高系統的效能和穩定性。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23825935/viewspace-2939607/,如需轉載,請註明出處,否則將追究法律責任。

相關文章