我的生產rails應用程序需要167秒來運行rake db:migrate。 可悲的是,有沒有遷移運行。我試圖通過檢查是否存在掛起的遷移來調整遷移,但檢查花費的時間一樣長。 在我看來,唯一的「藉口」是數據庫不是很小,那裏有1M記錄,但我沒有看到爲什麼那麼重要。 我在日誌中查看,但沒有任何表明出現任何問題。 我與即使沒有掛起的遷移,Rails遷移速度也非常緩慢
- 紅寶石運行2.2.0
- 的Rails 4.2.0
有沒有人有一個想法,爲什麼會這樣,以及是否有什麼關係呢?
我的生產rails應用程序需要167秒來運行rake db:migrate。 可悲的是,有沒有遷移運行。我試圖通過檢查是否存在掛起的遷移來調整遷移,但檢查花費的時間一樣長。 在我看來,唯一的「藉口」是數據庫不是很小,那裏有1M記錄,但我沒有看到爲什麼那麼重要。 我在日誌中查看,但沒有任何表明出現任何問題。 我與即使沒有掛起的遷移,Rails遷移速度也非常緩慢
有沒有人有一個想法,爲什麼會這樣,以及是否有什麼關係呢?
運行rake db:migrate
任務還會調用db:schema:dump
任務,該任務將更新您的db/schema.rb。因此,即使沒有遷移,也會導致其他rake任務運行,這可能會佔用這個時間,具體取決於數據庫模式的遷移次數/大小。
您可以查看到數據庫的源代碼:*任務(.../ActiveRecord的/ railties/databases.rake)
desc "Migrate the database (options: VERSION=x, VERBOSE=false)."
task :migrate => :environment do
ActiveRecord::Migration.verbose = ENV["VERBOSE"] ? ENV["VERBOSE"] == "true" : true
ActiveRecord::Migrator.migrate("db/migrate/", ENV["VERSION"] ? ENV["VERSION"].to_i : nil)
Rake::Task["db:schema:dump"].invoke if ActiveRecord::Base.schema_format == :ruby
end
參考文獻:http://guides.rubyonrails.org/active_record_migrations.html#running-migrations
Does rake db:schema:dump recreate schema.rb from migrations or the database itself?
這是否僅適用一般來說,是否需要遷移或啓動您的應用程序? – max
您好,只有遷移部分 –