ホームページ >データベース >mysql チュートリアル >MySQL ALTER TABLE 操作はテーブルをロックせずに実行できますか?

MySQL ALTER TABLE 操作はテーブルをロックせずに実行できますか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-24 17:14:15752ブラウズ

Can MySQL ALTER TABLE Operations Be Performed Without Locking the Table?

テーブルをロックせずにテーブルの変更操作を実行できますか?

MySQL の ALTER TABLE ステートメントはテーブルに読み取りロックを課し、同時書き込み。これは、長期間にわたって INSERT または UPDATE ステートメントがブロックされる可能性があるため、大規模なテーブルにとっては非常に不便になる可能性があります。列の追加中に更新を許可する「ホット変更」の解決策があるかどうかを理解することが重要です。

手動アプローチ

ネイティブ サポートがない場合ホット変更を行う場合、唯一の代替手段は、多くの RDBMS システムが採用しているプロセスを手動で複製することです。これには次のことが含まれます。

  1. 新しいテーブルの作成。
  2. 古いテーブルからデータをチャンクにコピーし、ソース テーブルで進行中の INSERT/UPDATE/DELETE 操作によって引き起こされる潜在的な競合を管理します。
  3. 古いテーブルの名前を変更し、続いて新しいテーブルの名前を変更します (理想的には
  4. 実行計画の有効性を維持するためにストアド プロシージャとその他の依存オブジェクトを再コンパイルします。

ホット変更がないことの正当性

MySQL にホット コンポーネントのネイティブ サポートがない背後にある理由を検討する価値があります。 alters:

  • フィールドの追加は、事実上、すべての行のフィールドを変更することと同じであり、これは重要な操作です。
  • フィールド ロックは、行ロックよりも実装が複雑です。
  • 物理ディスク構造を更新するには、すべてのレコードを再配置する必要があります。
  • このプロセスはテーブル全体に似ています。 UPDATE。通常のアップデートよりも根本的に影響力が大きくなります。

以上がMySQL ALTER TABLE 操作はテーブルをロックせずに実行できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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