ホームページ >データベース >mysql チュートリアル >テーブル全体をロックせずに MySQL で ALTER TABLE オペレーションを実行するにはどうすればよいですか?

テーブル全体をロックせずに MySQL で ALTER TABLE オペレーションを実行するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-21 03:17:17469ブラウズ

How Can I Perform an ALTER TABLE Operation in MySQL Without Locking the Entire Table?

テーブルをロックせずに ALTER TABLE

データベース管理の領域では、MySQL の ALTER TABLE 操作は通常、テーブル レベルの読み取りを引き起こします。ロックし、同時読み取りを許可しながら同時書き込みを妨げます。大規模なテーブルの場合、これにより INSERT または UPDATE ステートメントに大幅な遅延が発生する可能性があります。

ただし、考えられる解決策の 1 つは、「ホット変更」アプローチを検討することです。 MySQL はこれをネイティブにサポートしていませんが、他の RDBMS システムがこれを提供している場合があります。ただし、MySQL の場合は、手動による回避策に頼る必要があります。

  • 元のテーブルの構造をミラーリングし、必要な列を追加して新しいテーブルを作成します。
  • データを徐々に転送します。元のテーブルから新しいテーブルにチャンクを分割し、元のテーブルに対する同時 INSERT/UPDATE/DELETE 操作を処理するための予防措置を講じます (例:
  • 完了したら、できればトランザクション内で、元のテーブルと新しいテーブルのテーブル名を交換します。
  • 変更されたテーブルに依存するストアド プロシージャを再構成します。

新しい列の追加は本質的に変換操作であり、テーブル全体の構造とディスク上のデータ構成に影響を与えることに注意することが重要です。したがって、このプロセスでは、包括的な UPDATE 操作と同様に、パフォーマンスの低下が避けられません。ただし、この回避策を使用すると、明示的なテーブル ロックの必要がなくなり、変更プロセス中にデータを更新できるようになります。

以上がテーブル全体をロックせずに MySQL で ALTER TABLE オペレーションを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。