INTEGER GENERATED BY DEFAULT AS IDENTITY
であるid
があるテーブルがあるとします。
将来的にinteger
が小さすぎて、IDタイプをinteger
からbigint
に変更する必要がある場合、タイプを変更する方法を文書化しようと思っています。テーブルの行数が整数型が格納できる最大数に近い場合に発生する可能性が高いため、主に変更の時間の複雑さについて心配しています。
次のコマンドの時間の複雑さはどのくらいですか?
ALTER TABLE project ALTER COLUMN id TYPE BIGINT;
bigint
は4バイトのinteger
ではなく8バイトのストレージを使用するため、このコマンドはテーブル全体を書き換える必要があります。これが行われている間、テーブルは同時アクセスからロックされるため、大きなテーブルでは、より長いダウンタイムに備える必要があります。
これが必要になると思われる場合は、テーブルが小さいうちにできるだけ早く変更を実行してください。