Sooey

2014-10-05 15:18:30 +0900

A simple guide for DB migrations Craig Kerstiens

PostgreSQLでデータベースが巨大な場合は、NOT NULL制約を持つカラムの追加を以下のようなステップに分割することで、書き込みのロックを減らすことができるようだ。

  1. 新しいカラムをNULL可、デフォルト値ありで追加する
  2. 既存レコードの新しいカラムに値を設定する
  3. 新しいカラムにNOT NULL制約を追加する

これは、PostgreSQLがAppend only logな仕組みなため、UPDATEもDELETEも実際には新しいデータの書き込みであるということに起因しているらしい。