【oracle 10g R2 新特性】Asynchronous Commit
對於Oracle的commit機制,相信大家都已經非常的熟悉了。Oracle對於commit採取了同步寫事務log的方式,也就是說,一旦發出commit命令,那麼必須等待事務相關的所有redo都已經從log buffer寫出到redo logfile以後,才會控制權返回發出commit的程式。
同步commit有兩個特點:
1.Immediate,發出commit命令後,立即將redo寫出
2.Wait,在redo寫出過程中,必須等待,等待事物相關的所有redo都已經從log buffer寫出到redo logfile中。
但是,Oracle10gR2開始,一種新的commit機制被引入,這就是非同步commit機制。也就是說,不必等到事務相關redo寫出就可以返回了,非同步commit也有兩種特點:
1.Nowait,發出commit命令後,不管redo是否寫出,立即返回控制權
2.Batch,redo的寫出可以想buffer一樣執行批量寫出,以提高效能
當然,同步commit也可以batch,非同步commit也可以將redo立即寫出,所以上述四個特性可以自由組合。
Initialization Parameter and COMMIT Options for Managing Commit Redo
Option | Specifies that . . . |
---|---|
WAIT |
The commit does not return as successful until the redo corresponding to the commit is persisted in the online redo logs (default). |
NOWAIT |
The commit should return to the application without waiting for the redo to be written to the online redo logs. |
IMMEDIATE |
The log writer process should write the redo for the commit immediately (default). In other words, this option forces a disk I/O. |
BATCH |
Oracle Database should buffer the redo. The log writer process is permitted to write the redo to disk in its own time. |
這樣,commit引入了新的語法:
COMMIT [WRITE [IMMEDIATE | BATCH] [WAIT | NOWAIT] ]
預設情況下,commit的機制和以前一樣,也就是相當於
COMMIT WRITE IMMEDIATE WAIT;
當然,這個預設機制可以通過初始化引數修改,所以Oracle10gR2又引入了一個新的引數COMMIT_WRITE,可能的取值包括
COMMIT_WRITE='{ IMMEDIATE | BATCH } , { WAIT | NOWAIT }'
可以在初始化引數檔案中設定commit機制為BATCH和NOWAIT
例:COMMIT_WRITE = BATCH, NOWAIT
也可以使用alter system在系統級別設定commit機制為BATCH和NOWAIT
例:ALTER SYSTEM SET COMMIT_WRITE = BATCH, NOWAIT
Note that the specification of the NOWAIT and BATCH options allows a small window of vulnerability in which Oracle Database can roll back a transaction that your application view as committed. Your application must be able to tolerate the following scenarios:
|
非同步commit由於不能確保事務的redo已經寫出到redo logfile當中,一旦例項崩潰,可能導致已經commit的事務無法恢復,使用該特性的時候需要慎重考慮。
其他檔案:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9390331/viewspace-713464/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 10G特性之awrOracle 10g
- Oracle 12C R2新特性-本地UNDO模式(LOCAL_UNDO_ENABLED)Oracle模式
- 【10g SQL新特性】q-quote使用SQL
- 【12.2】Oracle 12C R2新特性-外部表支援分割槽了(Partitioning External Tables)Oracle
- Oracle merge 與 PG新特性 UPSERTOracle
- Oracle 12c新特性--ASMFD(ASM Filter Driver)特性OracleASMFilter
- oracle 10g flashback databaseOracle 10gDatabase
- Oracle 12C新特性-History命令Oracle
- Oracle 12C新特性In-MemoryOracle
- Oracle 12c 兩個新特性Oracle
- 1 Oracle Database 19c 新特性OracleDatabase
- Scheduler in Oracle Database 10g(轉)OracleDatabase
- Oracle 10g 下載地址Oracle 10g
- Oracle12C新特性_DDL日誌Oracle
- Oracle 20C 多租戶_新特性Oracle
- LightDB 23.1相容Oracle新特性支援Oracle
- ISO 映象安裝oracle 10gOracle 10g
- Oracle 10g RAC故障處理Oracle 10g
- Oracle 10g 增刪節點Oracle 10g
- Oracle 18c新特性詳解 - 表和表空間相關的新特性Oracle
- Oracle 21c新特性預覽與日常管理相關的幾個新特性Oracle
- Oracle vs PostgreSQL Develop(29) - COMMIT in PLSQLOracleSQLdevMIT
- Git插入新的commitGitMIT
- Oracle 12.2 新特性: Online PDB relocate (PDB hot move)Oracle
- oracle 19C新特性——混合分割槽表Oracle
- 【DATAGUARD】Oracle19c dataguard新特性及部署Oracle
- Oracle 12C新特性-RMAN恢復表Oracle
- Oracle 11g DG新特性--Automatic block repairOracleBloCAI
- Oracle 12c新特性---Rapid Home Provisioning (RHP)OracleAPI
- LightDB 22.4 新特性之相容Oracle sqluldr2OracleSQL
- Oracle:19c 新特性——Memoptimized Rowstore 簡介OracleZed
- LightDB23.1新特性支援Oracle hint增強DB2Oracle
- Oracle 12C新特性-資料泵新引數(LOGTIME)Oracle
- Oracle12C新特性_不可見欄位(二)Oracle
- Oracle 18C新特性之PDB snapshot(快照) CarouselOracle
- oracle 21c 新特性之 CHECKSUM 分析函式Oracle函式
- LightDB 22.4 新特性之相容Oracle樹形查詢Oracle
- ORACLE 19c 新特性之混合分割槽表Oracle
- Oracle 10g expdp attach引數體驗Oracle 10g