gpt4 book ai didi

postgresql - PostgreSQL 中的 INSERT 和事务序列化

转载 作者:行者123 更新时间:2023-11-29 11:46:17 25 4
gpt4 key购买 nike

我有一个问题。事务隔离级别设置为可序列化。当一个用户打开事务并在“table1”中插入或更新数据,然后另一个用户打开事务并尝试将数据插入同一个表时,第二个用户是否需要等待“直到第一个用户提交事务?

最佳答案

一般不会。第二个事务只是插入,所以除非需要进行唯一索引检查或其他触发器,否则可以无条件地插入数据。在唯一索引(包括主键)的情况下,如果两个事务都更新具有相同值的行,它将阻塞,例如:

-- Session 1                           -- Session 2
CREATE TABLE t (x INT PRIMARY KEY);
BEGIN;
INSERT INTO t VALUES (1);
BEGIN;
INSERT INTO t VALUES (1); -- blocks here
COMMIT;
-- finally completes with duplicate key error

在可能影响其他事务插入的更新的情况下,事情就不那么明显了。我知道 PostgreSQL 在这种情况下还不支持“真正的”可串行化。我不知道其他 SQL 系统对它的支持有多普遍。

参见 http://www.postgresql.org/docs/current/interactive/mvcc.html

关于postgresql - PostgreSQL 中的 INSERT 和事务序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3011260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com