增強的 COMMIT

jidongzheng發表於2008-08-04
增強的 COMMIT 當提交會話時,將重新整理重做日誌緩衝區,將其內容儲存到磁碟上的聯機重做日誌中。此過程確保在對資料庫進行恢復操作時,可以根據需要利用重做日誌中回放事務處理。 但是有時您可能想對一部分受保證的恢復能力進行調整,以獲得更好的效能。利用 Oracle 資料庫 10g 第 2 版,您現在可以控制如何將重做流寫入到聯機日誌檔案。您可以在執行提交語句時控制這種行為,或者只需更改資料庫的預設行為即可。 讓我們來看提交語句是工作過程。在事務處理後,當執行 COMMIT 時,可以附帶一個子句: COMMIT WRITE 其中 是影響重做流的部分。選項 WAIT 是預設行為。例如,您可以執行: COMMIT WRITE WAIT; 此命令與 COMMIT 本身的效果相同。在重做流寫入到聯機重做日誌檔案之前,提交命令不會將控制權交還給使用者。如果您不希望等待,則可以執行: COMMIT WRITE NOWAIT; 這樣,控制權立即返還給會話,甚至是在將重做流寫入聯機重做日誌之前。 當執行提交命令時,日誌寫入器程式將重做流寫入到聯機重做日誌。如果您正在進行一系列事務處理(如在批處理環境中),則可能不希望如此頻繁地進行提交。當然,最好的操作過程是更改應用程式以減少提交數量;但這可能說起來容易做起來難。在這種情況下,您只需執行以下的提交語句: COMMIT WRITE BATCH; 此命令將以批次方式將重做流寫入到日誌檔案中,而不是每次提交都執行寫操作。在頻繁提交的環境中,您可以使用這種技術來減少日誌緩衝區重新整理。如果您希望立即寫入日誌緩衝區,則可以執行: COMMIT WRITE IMMEDIATE; 如果您資料庫預設使用某種特定的提交行為,則可以執行以下語句。 ALTER SYSTEM SET COMMIT_WRITE = NOWAIT; 此命令將使資料庫預設使用這一行為。您還可以使其成為會話級預設行為: ALTER SESSION SET COMMIT_WORK = NOWAIT; 對於任何引數,如果完成設定後,則該引數在系統級執行。如果有會話級的設定,則會話級設定優先,而最後如果 COMMIT 語句後面有子句,則該子句優先。 此選項不可用於分散式事務處理。[@more@]

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

相關文章