天天看點

postgres 鎖表的模式

模式種類: 8種,汗

ACCESS SHARE MODE

ROW SHARE MODE

ROW EXCLUSIVE MODE

SHARE UPDATE EXCLUSIVE MODE

SHARE MODE

SHARE ROW EXCLUSIVE MODE

EXCLUSIVE MODE

ACCESS EXCLUSIVE MODE

可看一看 [url]http://www.phpchina.com/manual/PostgreSQL/sql-lock.html[/url]

[url]http://elicecn.byethost16.com/docs/postgresql-8.2.3-zh_CN/explicit-locking.html#LOCKING-TABLES[/url]

的說明。

太複雜了

簡單的說一下

如果你什麼都不寫,隻是lock table xxx;那麼就是ACCESS EXCLUSIVE MODE,是最進階的鎖,會和其他讀沖突.在鎖成功之前,其他事務的讀操作都要結束才行。

一般都是用lock table xxx in EXCLUSIVE MODE,鎖之前你讀可以,鎖之後你讀可以,你寫就不行。

row exclusive mode經過實驗,好像并沒有鎖住任何行,其他事務還是可以update delete insert,這個行為就和語義不一緻了.

是否這樣了解?row打頭的這些,隻是在行鎖發生時,對表做的一個标記?即一行發生鎖,産生一行鎖,也産生一“row exclusive”表鎖。而單獨執行 lock table in row exclusive mode隻是産生“row exclusive”表鎖,而實際上不存在一個真正意義的行鎖