MySQLでALTER TABLEステートメントを実行すると、ステートメントの期間中、テーブル全体が読み取りロックされます(同時読み取りは許可されますが、同時書き込みは禁止されます)。大きなテーブルの場合、INSERTまたはUPDATEステートメントが長時間ブロックされる可能性があります。テーブルがプロセス全体でまだ更新可能であるような方法で列を追加するような「ホットオルター」を行う方法はありますか?
ほとんどの場合、MySQLのソリューションに興味がありますが、MySQLで解決できない場合は、他のRDBMSにも興味があります。
明確にするために、私の目的は、追加のテーブル列を必要とする新機能が本番環境にプッシュされたときのダウンタイムを回避することです。すべてのデータベーススキーマは時間の経過とともに変化しますが、それは現実です。これらの変更が必然的にダウンタイムにつながることを受け入れる必要がある理由はわかりません。それはただ弱いです。