分類と応用: MySQL ロックの種類と使用法を理解する
Dec 21, 2023 am 08:52 AMMySQL ロックの分類と適用
データベースへの同時アクセスの場合にデータの一貫性と整合性を確保するために、MySQL はロック メカニズムを提供します。 。ロックは主要なリソースを保護し、同時トランザクションによるデータのアクセスと変更を制御できます。この記事では、MySQL ロックの分類と適用を紹介し、具体的なコード例を示します。
1. MySQL ロックの分類
MySQL ロックは、共有ロック (Shared Lock) と排他的ロック (Exclusive Lock) に分類できます。共有ロックと排他ロックは相互に排他的であり、同じリソース上に同時に存在することはできません。共有ロックは読み取り操作に使用され、複数のトランザクションが同じリソースの共有ロックを同時に取得できるようにします。排他ロックは書き込み操作に使用され、1 つのトランザクションのみがリソースの排他ロックを取得できます。
MySQL では一般的に 3 種類のロックが使用されます。
- テーブル レベルのロック: テーブル レベルのロックはテーブル全体をロックし、読み取りロックと書き込みロックに分けることができます。読み取りロックは共有ロックであり、複数のトランザクションが同時に読み取りロックを取得できます。書き込みロックは排他ロックで、1 つのトランザクションのみが書き込みロックを取得できます。
- 行レベルのロック: 行レベルのロックはテーブル内の行をロックします。特定の行を操作するトランザクションのみがその行のロックを取得します。行レベルのロックは、同時トランザクションによるデータ アクセスを正確に制御できますが、行レベルのロックの粒度は小さいため、ロックの数とオーバーヘッドが増加します。
- ページレベルのロック: ページレベルのロックはテーブル内のページをロックします。各ページのサイズは 16KB です。ページ レベルのロックはテーブル レベルのロックと行レベルのロックの間にあり、ロックの数とオーバーヘッドを削減できます。ただし、ページレベルのロックの粒度制御は行レベルのロックよりも劣るため、ロックの競合が発生する可能性があります。
2. MySQL ロック アプリケーション
- テーブル レベルのロック アプリケーションの例:
-- 事务1 START TRANSACTION; LOCK TABLES table_name WRITE; -- 执行写操作 COMMIT; -- 事务2 START TRANSACTION; LOCK TABLES table_name READ; -- 执行读操作 COMMIT;
- 行レベルのロック アプリケーションの例: ##
-- 事务1 START TRANSACTION; SELECT * FROM table_name WHERE id = 1 LOCK IN SHARE MODE; -- 读取数据 COMMIT; -- 事务2 START TRANSACTION; SELECT * FROM table_name WHERE id = 1 FOR UPDATE; -- 更新数据 COMMIT;
- ページレベルのロック適用例:
-- 事务1 START TRANSACTION; SELECT * FROM table_name WHERE id BETWEEN 1 AND 100 LOCK IN SHARE MODE; -- 读取数据 COMMIT; -- 事务2 START TRANSACTION; SELECT * FROM table_name WHERE id BETWEEN 1 AND 100 FOR UPDATE; -- 更新数据 COMMIT;
以上が分類と応用: MySQL ロックの種類と使用法を理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Java コレクション フレームワークにおける同時実行制御とスレッド セーフ

C# 開発に関する考慮事項: マルチスレッド プログラミングと同時実行制御

MySQL で分散ロックを使用して同時アクセスを制御するにはどうすればよいですか?

MySQL と Oracle: マルチバージョン同時実行制御とデータ整合性のサポートの比較

Go 言語における http.Transport の同時実行制御戦略とパフォーマンス最適化手法
