PostgreSQL ALTER COLUMN TYPE int 到 bigint 的持续时间

Duration of PostgreSQL ALTER COLUMN TYPE int to bigint

假设我有一个 table 有一个 id 是一个 INTEGER GENERATED BY DEFAULT AS IDENTITY

我正在寻找如何更改类型的文档,如果将来 integer 太小并且我需要将 ID 类型从 integer 更改为 bigint .我主要担心更改的时间复杂度,因为它可能会在 table 中的行数接近整数类型可以存储的最大数量时发生。

以下命令的时间复杂度是多少?

ALTER TABLE project ALTER COLUMN id TYPE BIGINT;

此命令必须重写整个 table,因为 bigint 占用 8 个字节的存储空间,而不是 integer 的 4 个字节。在发生这种情况时,table 将被锁定,无法进行并发访问,因此对于较大的 table,您应该准备好迎接更长的停机时间。

如果您认为这可能是必要的,请尽快执行更改,同时 table 仍然很小。