2016-10-07 4 views
3

私はこの質問をSOで行うべきかどうかはわかりません。しかし、私は疑いについて私は明確な考えを持っていないようにする必要があります。レールの移行にデフォルト値を設定せず、CTOによるコードレビューではなくヌル値を使用するように言われました。彼の説明はonce the database gets huge enough, migrations with defaults runs slow and may throw database timeout errorsのようなものです。しかし、私はデータベースレベルでは、物事の初期設定として実行するのに十分速いと思います。私は正しい?rails - レールのマイグレーションでデフォルト値を使用しないでください

答えて

4

テーブルの行数が膨大な場合、追加列の移行でデフォルト値を使用すると時間がかかります。

これはPostgresのドキュメントによって与えられる先端である:https://www.postgresql.org/docs/9.5/static/ddl-alter.html

ヒント:デフォルトでカラムを追加する(新しい列値を格納する)テーブルの各行を更新する必要があります。ただし、デフォルトを指定しないと、PostgreSQLは物理的な更新を回避できます。したがって、デフォルト以外の値を持つカラムをほとんど埋める場合は、カラムをデフォルト値なしで追加し、UPDATEを使用して正しい値を挿入し、次に説明するように任意のデフォルト値を追加するのが最善です。

0

このように見てください。 バイト単位のデフォルト値のサイズと比較して 'NULL'のサイズ。

この数行のデータの差は、KB以下である可能性がありますが、データベースのサイズが大きい場合は、乗算器の効果があります。 移行中にデフォルト値オプションを使用するには、もっと多くの作業が必要です。

多くの場合、ダウンタイム(または移行)時間が重大になる可能性があるため、DBAおよび開発者が使用可能なリソースの最適な使用を保証する役割がこれに含まれます。

ダミーのデータベースとベンチマークツールを使用して、これをより分かりやすく評価したい場合があります。

関連する問題