各類RDBMS事務隔離都差很少,Firebird 中大體分爲3類: CONCURRENCY、READ_COMMITTED、CONSISTENCY。數據庫
在提供的數據庫驅動裏可設置的事務隔離級別大體以下3類,按嚴格性,從低到高:併發性、讀提交、一致性。併發
---------------------------------------------------------------------- (CONCURRENCY | NOWAIT | READ_WRITE) => Snapshot (CONCURRENCY | NOWAIT | READ_WRITE) => RepeatableRead ---------------------------------------------------------------------- (READ_COMMITTED | REC_VERSION | NOWAIT | READ_WRITE) => ReadCommitted (READ_COMMITTED | REC_VERSION | NOWAIT | READ_WRITE) => ReadUncommitted (READ_COMMITTED | REC_VERSION | NOWAIT | READ_WRITE) => Chaos (READ_COMMITTED | REC_VERSION | NOWAIT | READ_WRITE) => Unspecified ---------------------------------------------------------------------- (CONSISTENCY | NOWAIT | READ_WRITE) => Serializable ----------------------------------------------------------------------
第一種 CONCURRENCY 併發性事務隔離。spa
主要針對讀數據,讀取的是快照,即事務1按照此級別讀表A第一條記錄時,事務2也對錶A的第一條記錄修改了 並提交,此時事務1再次刷新讀取(保持原事務),仍然讀取到的是第一次的快照信息,並無讀取到事務2更新信息。code
第二種 READ_COMMITTED 讀提交事務隔離。blog
即在第一種狀況的基礎上,事務1再次刷新讀取,便可讀取到事務2的更新信息。也就是說事務1在不提交和回滾事務的狀況下,刷新便可讀取事務2的修改信息。事務
第三種 CONSISTENCY 一致性事務隔離。ci
這種隔離級別是最嚴格的,它會對整個表上鎖。假如事務1在此級別讀取表A第一條記錄,事務2無論以什麼隔離級別再修改或刪除 表A的任意記錄 ,都是不容許,可是事務2能夠查看。it