MySQL の UPDATE 操作はテーブルをロックしますか?

王林
リリース: 2024-03-15 17:21:04
オリジナル
1095 人が閲覧しました

MySQL UPDATE操作会不会锁定表?

MySQL UPDATE 操作はテーブルをロックしますか?理論と実践で解説

MySQL は、データを操作するためのさまざまな SQL ステートメントを提供する人気のリレーショナル データベース管理システムです。実際のアプリケーションでは、更新操作 (UPDATE) がテーブル全体をロックするかどうかがよく問題になります。この記事では、MySQL での UPDATE 操作によるテーブルのロックについて理論的および実践的な観点から説明し、参考となる具体的なコード例を読者に提供します。

理論的説明:

MySQL では、更新操作には行レベルのロックとテーブルレベルのロックという 2 つのメカニズムが関係します。行レベルのロックは、更新操作に関係する行のみをロックし、テーブル全体をロックしないため、他のセッションはテーブル内の更新されていない他の行の読み取りまたは更新を続行できます。テーブルレベルのロックとは、テーブル全体をロックすることを指し、更新操作中、他のセッションによるテーブルの読み取りまたは更新は禁止されます。

MySQL のデフォルト設定によれば、UPDATE 操作では行レベルのロック メカニズムが使用されます。つまり、テーブル全体をロックせず、更新する必要がある行のみがロックされます。これにより、同時実行パフォーマンスが向上し、他のセッションへの影響が軽減されます。ただし、更新された行の数が特定のしきい値に達した場合、テーブルが特定のストレージ エンジンを使用している場合、または他のセッションがテーブル レベルのロックを使用している場合など、特定の状況下では、MySQL がテーブル レベルのロックに自動的にアップグレードする場合があります。

実践例:

MySQL UPDATE 操作によるテーブルのロックを検証するには、次のコード例を実際のテストに使用できます。 「users」という名前のテーブルがあり、そのテーブルに id と name という 2 つのフィールドが含まれていると仮定し、テーブル内の特定の行を更新します。

まず、MySQL データベースに接続し、「test」という名前のデータベースを作成します。

CREATE DATABASE test;
USE テスト;
ログイン後にコピー

次に、「users」という名前のテーブルを作成し、データの一部を挿入します。

CREATE TABLE users (
    id INT 主キー、
    名前 VARCHAR(255)
);

INSERT INTO users (id, name) VALUES (1, 'Alice');
ログイン後にコピー

次に、2 つの異なる MySQL クライアント セッションを開き、次の 2 つのコードをそれぞれ実行します:

セッション 1 : ######始める; UPDATE users SET name='Bob' WHERE id=1;

Session 2:
ログイン後にコピー

SELECT * FROM users WHERE id=1 FOR UPDATE;

上記のコードでは、セッション 1 は UPDATE 操作を実行して ID 1 の行を更新し、セッション 2 は同じ行に対して SELECT 操作を実行しようとして、FOR UPDATE を追加して行レベルのロックを明示的に取得しました。 
ログイン後にコピー

セッション 2 の実行結果を観察するか、SHOW ENGINE INNODB STATUS コマンドを使用して現在のロック ステータスを表示することで、MySQL がテーブル全体をロックしたか、更新された行だけをロックしたかを判断できます。通常の状況では、行レベルのロック メカニズムを使用すると、テーブル全体のロックを回避し、同時実行パフォーマンスを向上させることができます。

概要:

MySQL の UPDATE 操作は通常、テーブル全体をロックしませんが、行レベルのロック メカニズムを使用して更新された行をロックし、同時実行パフォーマンスを向上させます。ただし、特定の状況下では、テーブルレベルのロックにアップグレードされ、他のセッションの操作に影響を与える可能性があることに注意してください。ロック ステータスを実際にテストして監視することで、テーブルに対する MySQL 更新操作のロック動作をより深く理解し、習得できるため、データベースのパフォーマンスと同時処理機能を最適化できます。

上記は、MySQL の UPDATE オペレーションがテーブルをロックするかどうかについての理論的な説明と実践例であり、読者の参考になれば幸いです。

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

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!