Shi*_*n A 10 postgresql foreign-key
我有一个名为“Account”的表,它是一个经常使用的表,有 17 列,有超过 300,000 行。我正在尝试创建一个新表“NewTable”,它对“Account”表具有外键约束。
我的 CREATE TABLE 语句如下所示:
CREATE TABLE "NewTable"
(
"column1" VARCHAR(100) NOT NULL,
"column2" INTEGER NOT NULL,
PRIMARY KEY("column1")
CONSTRAINT "SomeFK" FOREIGN KEY ("column2") REFERENCES "Account" ("ID")
)
Run Code Online (Sandbox Code Playgroud)
上述语句执行了超过 25 分钟并没有完成。我们终止了交易。
当我们移除外键约束时,它会立即执行。
有人可以让我们知道是什么问题吗?我们最初认为它出于某种原因锁定了“Account”表,但是当我们查看“pg_locks”时,我们没有找到“Account”的任何条目——只有“NewTable”的独占锁。
小智 13
您的查询被锁定等待某事 - 我敢打赌它正在等待其他一些交易完成。
在创建表时,只需发出(在另一个 psql 会话中):
select * from pg_locks where pid = XXX and not granted;
Run Code Online (Sandbox Code Playgroud)
其中 xxx 是执行创建表的后端的 pid。
这将显示创建表正在等待的锁是什么。
| 归档时间: |
|
| 查看次数: |
6911 次 |
| 最近记录: |