postgresql行级锁定测试

时间:2017-11-15 08:54:59

标签: postgresql

我目前正在测试postgresql中的行级锁定。我使用的版本是8.3.23。我查了官方文档,这个版本支持行级锁定。但我发现它始终是一个整表锁而不是行级锁。 这是我做的:

CREATE TABLE test (

        id     SERIAL PRIMARY KEY,

        status  varchar(20)
);

INSERT INTO test(status) VALUES('a');

INSERT INTO test(status) VALUES('b');

SELECT * FROM test;

 id | status

----+--------

  2 | b

  1 | a

(2 rows)

Then I open 1 session:

BEGIN;

SELECT * FROM test WHERE id = 1 FOR UPDATE;

This session will acquire a lock.

And open another session:

BEGIN;

SELECT * FROM test WHERE id = 2 FOR UPDATE;

我发现第二次会议将在那里举行。我的问题是:第一个会话应该只锁定那些相关的行(id = 1的行),但似乎其他行(id = 2)也受到影响。是否有任何配置在postgresql中进行实际的行级锁定?感谢。

0 个答案:

没有答案