ホームページ >データベース >mysql チュートリアル >mysql データベースのロックは粒度に従って何に分割できますか?
粒度に従って次のように分類できます: 1. 行レベルのロック、MySQL で最も細かいロック粒度、つまり現在の操作の行のみがロックされます; 2. テーブル レベルのロック、 MySQL のロック粒度 最大の種類のロックは、現在の操作のテーブル全体をロックすることを意味します; 3. ページ レベル ロック、行レベル ロックとテーブル レベル ロックの間のロック粒度を持つ MySQL のロック。
このチュートリアルの動作環境: Windows7 システム、mysql8 バージョン、Dell G3 コンピューター。
リレーショナル データベースでは、データベース ロックは、ロックの粒度に応じて行レベルのロック (INNODB エンジン)、テーブル レベルのロック (MYISAM エンジン)、およびページ レベルのロック (BDB エンジン) に分類できます。
MyISAM および InnoDB ストレージ エンジンで使用されるロック:
MyISAM はテーブル レベルのロックを使用します。
InnoDB は、行レベルのロック (行レベルのロック) とテーブル レベルのロックをサポートしています。デフォルトは行レベルのロックです。
行レベルのロック、テーブルレベルのロック、およびページレベルのロックの比較
行レベルのロック: MySQL のロック粒度 最も薄い種類のロック。つまり、現在の操作の行のみがロックされます。行レベルのロックにより、データベース操作における競合を大幅に減らすことができます。ロックの粒度は最も小さくなりますが、ロックのオーバーヘッドも最大になります。行レベルのロックは、共有ロックと排他ロックに分類されます。
特徴: 高いオーバーヘッド、遅いロック、デッドロックが発生する可能性がある、ロックの粒度は最も小さく、ロック競合の可能性は最も低く、同時実行性は最も高くなります。
テーブル レベル ロック: MySQL でロックの粒度が最も大きいロック。つまり、現在の操作のテーブル全体をロックします。実装が簡単で、リソースの消費が少なく、ほとんどの MySQL エンジン サポートで使用されます。最も一般的に使用される MyISAM と InnoDB は、テーブル レベルのロックをサポートしています。テーブルレベルのロックは、テーブル共有読み取りロック (共有ロック) とテーブル排他的書き込みロック (排他的ロック) に分けられます。
特徴: 低いオーバーヘッド、高速なロック、デッドロックなし、大きなロック粒度、ロック競合の可能性が最も高く、同時実行性が最も低い。
ページ レベル ロック: これは、ロック粒度が行レベル ロックとテーブル レベル ロックの間である MySQL のロックです。テーブルレベルのロックは高速ですが競合が多く、行レベルのロックは競合がほとんどありませんが低速です。そこで、隣接するレコードのグループを一度にロックする、侵害されたページ レベルが採用されました。
特徴: オーバーヘッドとロック時間はテーブル ロックと行ロックの間であり、デッドロックが発生します。ロックの粒度はテーブル ロックと行ロックの間で、同時実行性は平均です
#関連する無料学習の推奨事項: mysql ビデオ チュートリアル
以上がmysql データベースのロックは粒度に従って何に分割できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。