模式种类: 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”表锁,而实际上不存在一个真正意义的行锁
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”表锁,而实际上不存在一个真正意义的行锁