在不锁定 PostgreSQL 中的 table 的情况下,在大型 table(600 万条记录)上创建主键
Create a Primary Key on a large table (6Million records) without locking the table in PostgreSQL
我想在具有 600 万条记录的 table 上创建一个主键,但是当我执行此操作时:
ALTER TABLE schema_name.table_name ADD CONSTRAINT pkey_name PRIMARY KEY (field_pkey_name);
它正在锁定我的 table 并且更改 table 没有完成执行...
尝试分两步完成:
CREATE UNIQUE INDEX CONCURRENTLY pkey_name
ON schema_name.table_name (field_pkey_name);
ALTER TABLE schema_name.table_name
ADD CONSTRAINT pkey_name PRIMARY KEY USING INDEX pkey_name;
仍然需要很长时间(甚至更长),但是table不会被锁定。
我想在具有 600 万条记录的 table 上创建一个主键,但是当我执行此操作时:
ALTER TABLE schema_name.table_name ADD CONSTRAINT pkey_name PRIMARY KEY (field_pkey_name);
它正在锁定我的 table 并且更改 table 没有完成执行...
尝试分两步完成:
CREATE UNIQUE INDEX CONCURRENTLY pkey_name
ON schema_name.table_name (field_pkey_name);
ALTER TABLE schema_name.table_name
ADD CONSTRAINT pkey_name PRIMARY KEY USING INDEX pkey_name;
仍然需要很长时间(甚至更长),但是table不会被锁定。