web-dev-qa-db-ja.com

PostgreSQLのALTER COLUMN TYPE intからbigintまでの期間

INTEGER GENERATED BY DEFAULT AS IDENTITYであるidがあるテーブルがあるとします。

将来的にintegerが小さすぎて、IDタイプをintegerからbigintに変更する必要がある場合、タイプを変更する方法を文書化しようと思っています。テーブルの行数が整数型が格納できる最大数に近い場合に発生する可能性が高いため、主に変更の時間の複雑さについて心配しています。

次のコマンドの時間の複雑さはどのくらいですか?

ALTER TABLE project ALTER COLUMN id TYPE BIGINT;
8
Deniablesummer

bigintは4バイトのintegerではなく8バイトのストレージを使用するため、このコマンドはテーブル全体を書き換える必要があります。これが行われている間、テーブルは同時アクセスからロックされるため、大きなテーブルでは、より長いダウンタイムに備える必要があります。

これが必要になると思われる場合は、テーブルが小さいうちにできるだけ早く変更を実行してください。

6
Laurenz Albe