2007-03-10

PostgreSQL 的事務交易(Transaction)功能層級探討(一)

更新:2007-03-10
對映章節:C12
Concurrency Control - Transaction Isolation Level

內容:

SQL 定義的4種事務隔離(Transaction Isolation)層級

Isolation Level Dirty Read Nonrepeatable Read Phantom Read
Read uncommitted Possible Possible Possible
Read committed Not possible Possible Possible
Repeatable read Not possible Not possible Possible
Serializable Not possible Not possible Not possible

PostgreSQL 裡,你可以請求四種可能的事務隔離級別中的任意一種。
但是在內部,實際上只有兩種獨立的隔離級別,分別對應讀已提交(Read Committed)和可序列化(Serializable)。 如果你選擇了讀未提交的級別,實際上你用的是讀已提交, 在你選擇可重複的讀級別的時候,實際上你用的是可序列化,所以實際的隔離級別可能比你選擇的更嚴格。 這是 SQL 標準允許的:四種隔離級分別定義了何種現象不能發生,但是沒有定義那種現象一定要發生。
PostgreSQL 只提供 2種隔離級別的, 原因是聰明的把標準的隔離級別映射(mapping)到PG 獨有的多版本併發控制(MVCC)架構中來實作更嚴謹的 4種層級

http://www.postgresql.org/docs/current/interactive/sql-set-transaction.html

#BEGIN TRANSACTION ISOLATION [Level]; --宣告

BEGIN
...
SAVEPOINT []
ROLLBACK
ROLLBACK TO SAVEPOINT []
#END; --結束
COMMIT

沒有留言:

網誌存檔

PostgreSQL & Google-Analytics Running...

::Planet PostgreSQL::

PostgreSQL Information Page

PostgreSQL日記(日本 石井達夫先生Blog)

PostgreSQL News

黑喵的家 - 資料庫相關

Google 網上論壇
PostgreSQL 8 DBA 專業指南中文版
書籍內容討論與更多下載區(造訪此群組)
目錄下載: PostgreSQL_8 _DBA_Index_zh_TW.pdf (更新:2007-05-18)

全球訪客分佈圖(Google)

全球訪客分佈圖(Google)