我不知道我是否應該問這個問題上的SO與否。但我不得不因爲我對我的懷疑沒有清楚的想法。我被告知不要在rails migrations中設置默認值,而是在CTO的代碼審查中使用空值。他的解釋是這樣once the database gets huge enough, migrations with defaults runs slow and may throw database timeout errors
。但是我認爲在數據庫層面上,執行它的初始設置足夠快。我對嗎?在加列遷移軌道 - 不應該使用默認值在軌遷移
3
A
回答
4
使用默認值,需要一定的時間,當表中的行數是巨大的。
這是由文件的Postgres給出一個提示:https://www.postgresql.org/docs/9.5/static/ddl-alter.html
提示:添加列具有默認需要更新表的每一行(存儲新的列值)。但是,如果沒有指定默認值,PostgreSQL能夠避免物理更新。因此,如果您打算使用大多數非默認值填充列,最好添加沒有默認值的列,使用UPDATE插入正確的值,然後添加任何所需的默認值,如下所述。
0
看這個樣子.. 'NULL'的大小與默認值的大小相比,以字節爲單位。
這種差異的可能以KB或更低,但在數據庫的大小大,這將有事半功倍的效果數據的幾行。 因此,在遷移過程中,默認值選項肯定需要做更多的工作。
的停機時間(或遷移)時間可以是在許多情況下關鍵的,因此,DBA和開發者的其作用,保證可用資源的最佳使用,這包括時間。
你可能喜歡這種使用虛擬數據庫和更清晰基準工具來評估。
相關問題
- 1. Model.reset_column_information不在軌道遷移
- 2. 軌道模型默認值
- 3. 用mysql與軌道遷移
- 4. 添加陣列默認遷移結束 - 軌道
- 5. 軌道5 - 軌道產生遷移不添加遷移到文件夾
- 6. 定影軌道遷移使用Capistrano的
- 7. 軌道創建遷移CreateContacts
- 8. 軌道遷移古怪
- 9. 與軌道導軌默認基
- 10. 導軌遷移更改默認值與新行字符列
- 11. 不使用遷移中的默認值
- 12. 軌道ActiveRecord不尊重布爾默認
- 13. 軌道的軌道怪異行爲破壞遷移
- 14. 我們應該使用抽象軌道多態遷移語法嗎?
- 15. 軌道遷移錯誤 - 發生在所有遷移
- 16. 在應用服務器如何運行的軌道遷移
- 17. 混亂的軌道模型和遷移
- 18. 刪除/「重新激活」軌道遷移
- 19. 刪除軌道表和遷移
- 20. 副本軌道表中遷移
- 21. 刪除過去的軌道遷移
- 22. 學習軌道3.0 - 遷移幫助 - belongsTo
- 23. Heroku的軌道遷移問題
- 24. Heroku的運行軌道分貝:遷移
- 25. 軌道4:刪除類(協)會遷移
- 26. 軌道從回形針遷移到carrierwave_direct
- 27. 軌道4遷移和範圍
- 28. 軌道4遷移打倒Mutilple drop_table
- 29. 軌道模型關係和遷移
- 30. 軌道,當它應該