MySQL のロック原理とアプリケーションの実践
要約: MySQL は、強力な同時処理機能を備えた一般的に使用されるリレーショナル データベース管理システムです。複数のユーザーが同時にデータベースにアクセスする場合、データの一貫性と整合性を確保するために、MySQL はロック メカニズムを使用して共有リソースへのアクセスを制御します。この記事では、ロック レベル、ロック分類、ロック競合処理方法などの MySQL ロックの原則を紹介し、特定のコード例と組み合わせて、MySQL ロックの適用方法を示します。
4.1 テーブル レベルのロック: テーブル全体をロックします。バックアップ、テーブル構造の変更など、テーブル全体が操作されるシナリオに適しています。
4.2 行レベルのロック (行レベルのロック): テーブル内の特定の行をロックします。クエリ、更新、クエリなど、単一または少量のデータが操作されるシナリオに適しています。等
5.1 ロックの待機: リクエストが必要なロックを取得できない場合、MySQL はリクエストを待機キューに追加し、ロックが解放されるのを待ってから処理します。
5.2 すぐに返す: リクエストが必要なロックを取得できない場合、MySQL は待機キューに入らずにすぐにエラー メッセージを返します。
6.1 テスト テーブルの作成
まず、実際のデータ操作シナリオをシミュレートするためのテスト テーブルを作成します。
CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `age` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
6.2 データの追加
次に、テスト データをテーブルに追加します。
INSERT INTO `user` (`name`, `age`) VALUES ('张三', 20), ('李四', 25), ('王五', 30);
6.3 排他ロックを使用してデータを更新する
次に、排他ロックを使用してデータを更新します。
START TRANSACTION; SELECT * FROM `user` WHERE `age` = 25 FOR UPDATE; UPDATE `user` SET `age` = 26 WHERE `age` = 25; COMMIT;
6.4 共有ロックを使用してデータを読み取る
最後に、共有ロックを使用してデータを読み取ります。
START TRANSACTION; SELECT * FROM `user` WHERE `age` = 26 LOCK IN SHARE MODE; COMMIT;
参考資料:
1.『MySQL 5.7 リファレンスマニュアル』
2.『High-Performance MySQL: Optimization, Backups, and Replication』書籍
上記MySQL ロックの原則とアプリケーションの実践についてのこの紹介は、データベースの同時処理に MySQL を使用するすべての人に役立つことを願っています。
以上がMySQL ロックの原則と適用方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。