本番サイトへのマイグレーション中にデータベーストランザクションエラーを防ぐため、https://github.com/LendingHome/zero_downtime_migrations(詳細はhttps://robots.thoughtbot.com/how-to-create-postgres-indexes-concurrently-inの概略)のアドバイスに従いましたが、特に大きなテーブルのインデックスでは、インデックス作成の「同時」メソッドでもテーブルがロックされ、そのテーブルでActiveRecordを作成または更新すると、それぞれのトランザクションがPG::InFailedSqlTransaction
例外で失敗しました。ここでRails add_indexアルゴリズム::移行中にデータベースロックアップが発生する
は、我々は(ActiveRecordの4.2.7.1を持つ)のRails 4.2を実行しているように、移行が見えたものです:
class AddTypeIndexToModel < ActiveRecord::Migration
disable_ddl_transaction!
def change
add_index :model, :model_type_id, algorithm: :concurrently
end
end
monkeypatchを使用しましたか?どのように示されているのですかhttps://github.com/barsoom/devbook/tree/master/deploy_without_downtime –