他のデータベースと比較して、MySQL のロック メカニズムは比較的シンプルです。その最大の特徴は、異なるストレージ エンジンが異なるロック メカニズムをサポートしていることです
MySQL ロックの概要
他のデータベースと比較して、MySQL のロック メカニズムは比較的シンプルです。重要な特徴は、異なるストレージ エンジンが異なるロック メカニズムをサポートしていることです。たとえば、MyISAM および MEMORY ストレージ エンジンはテーブル レベルのロック (テーブル レベルのロック) を使用しますが、BDB ストレージ エンジンはページ レベルのロック (ページ レベルのロック) を使用しますが、InnoDB ストレージ エンジンがサポートするテーブル レベルのロックもサポートします。行レベルのロック (行レベルのロック) とテーブル レベルのロックの両方もサポートされていますが、デフォルトでは行レベルのロックが使用されます。
MySQL におけるこれら 3 つのロックの特徴は、大まかに次のように要約できます。
オーバーヘッド、ロック速度、デッドロック、粒度、同時実行パフォーマンス
l テーブルレベルのロック: 低いオーバーヘッド、高速なロック、大きなロック粒度、最も高いロック競合確率、最も低い同時実行性。开L レベルのロック: 費用が大きく、ロックが遅い。ロックのパーティクル サイズが最小で、ロック競合の可能性が最も低く、同時実行性が最も高い。
l ページ ロック: コストとロック時間はテーブル ロックと行ロックの間であり、デッドロックが発生します。ロックの粒度はテーブル ロックと行ロックの間であり、同時実行性は平均的です。
MyISAM テーブル ロック
statusvariables: mysql> show status like 'table%';
+---- - -------+------+
| 値 |
+-------------- -- --------+------+
| テーブルロック_即時 |
| テーブルロック_待機中 |
+------ ---+----------+
セット内の 2 行 (0.00 秒))
Table_locks_waited の値が比較的高い場合は、テーブル レベルの深刻なロック競合があることを示します。
InnoDB 行ロック競合を取得する
mysql> show status like 'innodb_row_lock%';
+-------- -- ----------+----------+
| 値 |
+---------- -- -------+------+
| InnoDB_row_lock_time 0 |
| |
| InnoDB_row_lock_waits 0 |
+--------------------------------+------ +
セット内の 5 行 (0.01 秒)
InnoDB_row_lock_waits や InnoDB_row_lock_time_avg の値が比較的高いなど、ロック競合が深刻であることが判明した場合は、
Unlock
最初の
show processlist; Lock process, kill ID; 2 番目のタイプ mysql>UNLOCK TABLES;Lock table バックアップ プロセス中にテーブルが更新されないようにデータ テーブルをロックしますmysql> LOCK TABLES tbl_name READ; テーブルに書き込みロックを追加します:
mysql>LOCK TABLES tbl_name WRITE;
【関連する推奨事項】
1.
Mysql 無料ビデオチュートリアル 3 . 4. MySQL の元の内容を変更せずに後で内容を追加する SQL ステートメントの詳細な説明5. MySQL でよく使用される SQL ステートメントを作成するには
以上がMYSQL でのテーブルのロック解除とロックの詳細な例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。