📰
BackendAnnouncementEN → JA
40

m3tech ·

PostgreSQL 18からNOT NULL制約をNOT VALIDで追加できるようになりました - エムスリーテックブログ

要約

運用中のデータベースにおいて、既存テーブルにNOT NULL制約を持つカラムを追加する作業は複雑で、特に各行で異なる非NULL値を必要とする場合に長時間ロックを避けるための工夫が必要でした。これまではCHECK制約を経由する複雑な手順が一般的でしたが、PostgreSQL 18でNOT NULL制約をNOT VALIDで追加する機能がサポートされました。これにより、テーブルロックの回避を考慮した際の運用手順が大幅に簡素化され、よりスマートなデータベース運用が可能になります。記事ではPG17との比較検証を通して、この新機能が運用手順を減らし、pg_constraintカタログでの管理強化など柔軟性を向上させることを示しています。

📌

Key Points

  • •PostgreSQL 18でNOT NULL制約をNOT VALID属性付きで追加できるようになったことが確認された。
  • •PostgreSQL 17までのCHECK制約を利用した複雑な方法と比較して、NOT NULL制約追加の手順が簡素化される。
  • •内部的にはpg_constraintカタログでNOT NULL制約が管理されるようになり、制約に名前を付けられるなど運用の柔軟性が向上している。

Why it matters

この改善により、大規模な本番環境でデータベースのスキーマ変更をより安全かつ効率的に行えるようになり、システム停止時間のリスクを低減できます。

関連エンティティ
PostgreSQLエムスリーテックブログデジスマチームDockerpg_constraintUUID