ホームページ >データベース >mysql チュートリアル >MySQLデータベースのテーブル構造をオンラインで変更する方法
推奨学習: mysql ビデオ チュートリアル
テーブル構造を変更する前に、まず考えられる問題を見てみましょう。
MySQL には MDL メタデータ ロックと呼ばれるロックがあり、テーブルが変更されると、このロックは自動的にテーブルに追加されます。自分で明示的に使用する必要があります。
読み取りと読み取りは相互排他的ではなく、読み取りと書き込み、書き込みと書き込みは相互排他的であるため、
A(select)、B(alter)、C(select)、D(select)... が同じ MySQL テーブルに対する連続したリクエストであるシナリオを想像してください。これらのリクエストはキューを形成します。
A (選択) がテーブルの MDL 読み取りロックを取得すると、B (変更) がブロックされます。B は MDL 書き込みロックを追加する必要があるためです。B がブロックされると、待機キュー内の他のユーザーがブロックされます。すべてのリクエストがブロックされ、最終的には MySQL の利用可能な接続が枯渇し、リクエストのタイムアウトやその他の問題が発生します。
2. MySQL テーブル構造をオンラインで変更する方法
具体的な手順:
テーブルに読み取り/書き込みロックを追加し、現時点ではテーブルを読み取り専用にします。改善点:
元のテーブルよりもいくつかのフィールドが多い新しいテーブル A_new を作成し、データ サブスクリプションを通じて元のテーブル A をサブスクライブします。オンライン テーブル A のデータは、新しく作成されたテーブル A_new に同期されます。このプロセスは続行され、このプロセス中にテーブル A を追加、削除、変更、確認することができます。2 つのテーブルのデータが同期される瞬間が常に存在します。完全に同期されています。はい、データに違いはありません。このとき、元のテーブル名 A が変更され、新しいテーブル A_new が元のテーブル A に変更されます。この操作は短い操作であり、瞬時に完了できます。あまり影響なく。
利点と欠点:以上がMySQLデータベースのテーブル構造をオンラインで変更する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。