ホームページ > データベース > mysql チュートリアル > MYSQL でのテーブルのロック解除とロックの詳細な例

MYSQL でのテーブルのロック解除とロックの詳細な例

Y2J
リリース: 2017-05-22 14:20:18
オリジナル
1999 人が閲覧しました

他のデータベースと比較して、MySQL のロック メカニズムは比較的シンプルです。その最大の特徴は、異なるストレージ エンジンが異なるロック メカニズムをサポートしていることです

MySQL ロックの概要

他のデータベースと比較して、MySQL のロック メカニズムは比較的シンプルです。重要な特徴は、異なるストレージ エンジンが異なるロック メカニズムをサポートしていることです。たとえば、MyISAM および MEMORY ストレージ エンジンはテーブル レベルのロック (テーブル レベルのロック) を使用しますが、BDB ストレージ エンジンはページ レベルのロック (ページ レベルのロック) を使用しますが、InnoDB ストレージ エンジンがサポートするテーブル レベルのロックもサポートします。行レベルのロック (行レベルのロック) とテーブル レベルのロックの両方もサポートされていますが、デフォルトでは行レベルのロックが使用されます。

MySQL におけるこれら 3 つのロックの特徴は、大まかに次のように要約できます。

オーバーヘッド、ロック速度、デッドロック、粒度、同時実行パフォーマンス

l テーブルレベルのロック: 低いオーバーヘッド、高速なロック、大きなロック粒度、最も高いロック競合確率、最も低い同時実行性。开L レベルのロック: 費用が大きく、ロックが遅い。ロックのパーティクル サイズが最小で、ロック競合の可能性が最も低く、同時実行性が最も高い。
l ページ ロック: コストとロック時間はテーブル ロックと行ロックの間であり、デッドロックが発生します。ロックの粒度はテーブル ロックと行ロックの間であり、同時実行性は平均的です。


MyISAM テーブル ロック

MyISAM ストレージ エンジンは、テーブル ロックのみをサポートします。これは、MySQL の最初のいくつかのバージョンでサポートされている唯一のロック タイプでもあります。トランザクションの整合性と同時実行性に対するアプリケーション要件の継続的な改善に伴い、MySQL はトランザクション ベースのストレージ エンジンの開発を開始し、その後、ページ ロックをサポートする BDB ストレージ エンジンと行ロックをサポートする InnoDB ストレージ エンジンが徐々に登場しました (実際には InnoDB は別のものです)。現在は Oracle に買収された会社です)。ただし、MyISAM のテーブル ロックは依然として最も広く使用されているロック タイプです。このセクションでは、MyISAM テーブル ロックの使用方法を詳しく紹介します。


クエリテーブルレベルのロック競合

table_locks_waited と table_locks_immediate をチェックすることで、システム上のテーブル ロック競合を分析できます

statusvariables: mysql> show status like 'table%';
+---- - -------+------+
| 値 |
+-------------- -- --------+------+
| テーブルロック_即時 |
| テーブルロック_待機中 |
+------ ---+----------+
セット内の 2 行 (0.00 秒))
Table_locks_waited の値が比較的高い場合は、テーブル レベルの深刻なロック競合があることを示します。

InnoDB 行ロック競合を取得する

InnoDB_row_lock ステータス変数をチェックすることで、システム上の行ロック競合を分析できます:

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 無料ビデオチュートリアル

2. 速度を上げる方法数百万のデータベース クエリ

3 .

よくあるデータベース設計の 5 つの間違い

4. MySQL の元の内容を変更せずに後で内容を追加する SQL ステートメントの詳細な説明

5. MySQL でよく使用される SQL ステートメントを作成するには

以上がMYSQL でのテーブルのロック解除とロックの詳細な例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート