私はこの質問をSOで行うべきかどうかはわかりません。しかし、私は疑いについて私は明確な考えを持っていないようにする必要があります。レールの移行にデフォルト値を設定せず、CTOによるコードレビューではなくヌル値を使用するように言われました。彼の説明はonce the database gets huge enough, migrations with defaults runs slow and may throw database timeout errors
のようなものです。しかし、私はデータベースレベルでは、物事の初期設定として実行するのに十分速いと思います。私は正しい?rails - レールのマイグレーションでデフォルト値を使用しないでください
3
A
答えて
4
テーブルの行数が膨大な場合、追加列の移行でデフォルト値を使用すると時間がかかります。
これはPostgresのドキュメントによって与えられる先端である:https://www.postgresql.org/docs/9.5/static/ddl-alter.html
ヒント:デフォルトでカラムを追加する(新しい列値を格納する)テーブルの各行を更新する必要があります。ただし、デフォルトを指定しないと、PostgreSQLは物理的な更新を回避できます。したがって、デフォルト以外の値を持つカラムをほとんど埋める場合は、カラムをデフォルト値なしで追加し、UPDATEを使用して正しい値を挿入し、次に説明するように任意のデフォルト値を追加するのが最善です。
0
このように見てください。 バイト単位のデフォルト値のサイズと比較して 'NULL'のサイズ。
この数行のデータの差は、KB以下である可能性がありますが、データベースのサイズが大きい場合は、乗算器の効果があります。 移行中にデフォルト値オプションを使用するには、もっと多くの作業が必要です。
多くの場合、ダウンタイム(または移行)時間が重大になる可能性があるため、DBAおよび開発者が使用可能なリソースの最適な使用を保証する役割がこれに含まれます。
ダミーのデータベースとベンチマークツールを使用して、これをより分かりやすく評価したい場合があります。
関連する問題
- 1. レールでクラス変数@@を使用しないでください。
- 2. デフォルトでmysqli_store_resultを使用してください
- 3. オプションのprotobufフィールドにデフォルト値を設定しないでください。
- 4. 入力ボックスのデフォルト値を取得しないでください
- 5. デフォルト値を表示しないで選択してください
- 6. Cデフォルトのケースをトリガーしないでください
- 7. Github、デフォルトのプルリクエストをマスターにしないでください
- 8. preg_replaceを正しく使用しないでください
- 9. StandardXAConnectionHandle:EJBServerの外でprepareStatementを使用しないでください
- 10. タイプスイッチのブランチでタイプアサーションを使用しないでください。
- 11. マイグレーションに使用する列の種類を教えてください。
- 12. 非プリミティブな値をキーとして使用しないでください。代わりに文字列/数値を使用してください。 VueJS
- 13. gridviewのドロップダウンリストテンプレートを編集しないでください。列の値を更新しないでください
- 14. パンダを使用してカテゴリ値を入力しないでください。
- 15. 常にmy;を使用してください。ローカルを使用しないでください?
- 16. 数値データ型の.NET拡張メソッドを使用しないでください。
- 17. ウェブサイトでjavascriptやjqueryを使用しないでください。
- 18. FutureRequestExecutionServiceでPoolingHttpClientConnectionManagerを使用しないでください。
- 19. WinFormsアプリケーションでSystem.Web.Caching.Cacheクラスを使用しないでください。
- 20. Javaでフラグメンテーションフラグを使用しないでください
- 21. ハイブでバケツを使用しないでください。
- 22. JSON-LDスキーマをインラインで使用しないでください
- 23. Cファイルでsizeof(double)を使用しないでください。
- 24. Nativescriptでnpm Orientjsを使用しないでください
- 25. データセット/データフレームでgroupby()を使用しないでください。
- 26. C++バリデーションラムダで "auto"キーワードを使用しないでください。
- 27. アプリケーションコードでClassTypeを使用しないでください。
- 28. スプリングデータでネイティブSQLを使用しないでください。
- 29. アンドロイド用MSAL for Chromeを使用しないでください
- 30. Rails 5でマイグレーションのモデルが定義されていない