PostgreSQL事務隔離級別
1. 概念
髒讀
一個事務讀取了另一個並行未提交事務寫入的資料。
不可重複讀
一個事務重新讀取之前讀取過的資料,發現該資料已經被另一個事務(在初始讀之後提交)修改。
幻讀
一個事務重新執行一個返回符合一個搜尋條件的行集合的查詢, 發現滿足條件的行集合因為另一個最近提交的事務而發生了改變。
序列化異常
成功提交一組事務的結果與這些事務所有可能的序列執行結果都不一致。
2. 事務隔離級別
設定事務隔離級別:
SET TRANSACTION transaction_mode [, ...]
SET TRANSACTION SNAPSHOT snapshot_id
SET SESSION CHARACTERISTICS AS TRANSACTION transaction_mode [, ...]
其中 transaction_mode 是下列之一:
ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }
READ WRITE | READ ONLY
[ NOT ] DEFERRABLE
SQL 標準定義了一種額外的級別:READ UNCOMMITTED。在 PostgreSQL中READ UNCOMMITTED被視作 READ COMMITTED。
要用一個已經存在的事務的同一快照開始一個新事務,首先要從該現有 事務匯出快照。這將會返回快照識別符號,
BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;
SELECT pg_export_snapshot();
pg_export_snapshot
---------------------
00000003-0000001B-1
(1 row)
然後在一個新開始的事務的開頭把該快照識別符號用在一個 SET TRANSACTION SNAPSHOT命令中:
BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;
SET TRANSACTION SNAPSHOT '00000003-0000001B-1';
postgres@postgres [local]=> show default_transaction_isolation;
default_transaction_isolation
-------------------------------
read committed
(1 row)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69990629/viewspace-2779524/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL 事務隔離級別MySql
- 事務、特性、隔離級別
- MySQL事務隔離級別MySql
- [Mysql]事務/隔離級別MySql
- MySQL事務的隔離級別MySql
- MySQL的事務隔離級別MySql
- 理解MySQL事務隔離級別MySql
- mysql修改事務隔離級別MySql
- Oracle-事務隔離級別Oracle
- JDBC 事務(一) 隔離級別JDBC
- PostgreSQL DBA(23) - MVCC#3(事務快照和隔離級別)SQLMVCC#
- SqlServer事務詳解(事務隔離性和隔離級別詳解)SQLServer
- PostgreSQL的事務隔離分析SQL
- MySQL事務隔離級別和MVCCMySqlMVC
- 事務系統的隔離級別
- mysql如何修改事務隔離級別MySql
- mysql事務隔離級別和鎖MySql
- 啥是 MySQL 事務隔離級別?MySql
- Mysql 四種事務隔離級別MySql
- Mysql鎖與事務隔離級別MySql
- 理解mysql的事務隔離級別MySql
- 資料庫事務隔離級別資料庫
- MySQL事務隔離級別詳解MySql
- SQL Server事務的隔離級別SQLServer
- 資料庫事務與事務的隔離級別資料庫
- 事務隔離級別(圖文詳解)
- 事務ACID特性與隔離級別
- 資料庫事務與隔離級別資料庫
- 事務基礎特性及隔離級別
- MySQL 的四種事務隔離級別MySql
- 面試被吊打系列 - 事務隔離級別面試
- MySQL 事務的隔離級別初窺MySql
- CYmysql事務隔離級別詳情dbzMySql
- 資料庫事務及其隔離級別資料庫
- MySQL的四種事務隔離級別MySql
- 檢視ORACLE事務隔離級別方法Oracle
- SQL Server 事務隔離級別詳解SQLServer
- ORACLE資料庫事務隔離級別Oracle資料庫