ホームページ  >  記事  >  データベース  >  mysql データベースのロックは粒度に従って何に分割できますか?

mysql データベースのロックは粒度に従って何に分割できますか?

青灯夜游
青灯夜游オリジナル
2021-04-21 18:38:573906ブラウズ

粒度に従って次のように分類できます: 1. 行レベルのロック、MySQL で最も細かいロック粒度、つまり現在の操作の行のみがロックされます; 2. テーブル レベルのロック、 MySQL のロック粒度 最大の種類のロックは、現在の操作のテーブル全体をロックすることを意味します; 3. ページ レベル ロック、行レベル ロックとテーブル レベル ロックの間のロック粒度を持つ MySQL のロック。

mysql データベースのロックは粒度に従って何に分割できますか?

このチュートリアルの動作環境: Windows7 システム、mysql8 バージョン、Dell G3 コンピューター。

リレーショナル データベースでは、データベース ロックは、ロックの粒度に応じて行レベルのロック (INNODB エンジン)、テーブル レベルのロック (MYISAM エンジン)、およびページ レベルのロック (BDB エンジン) に分類できます。

MyISAM および InnoDB ストレージ エンジンで使用されるロック:

  • MyISAM はテーブル レベルのロックを使用します。

  • InnoDB は、行レベルのロック (行レベルのロック) とテーブル レベルのロックをサポートしています。デフォルトは行レベルのロックです。

行レベルのロック、テーブルレベルのロック、およびページレベルのロックの比較

  • 行レベルのロック: MySQL のロック粒度 最も薄い種類のロック。つまり、現在の操作の行のみがロックされます。行レベルのロックにより、データベース操作における競合を大幅に減らすことができます。ロックの粒度は最も小さくなりますが、ロックのオーバーヘッドも最大になります。行レベルのロックは、共有ロックと排他ロックに分類されます。

    特徴: 高いオーバーヘッド、遅いロック、デッドロックが発生する可能性がある、ロックの粒度は最も小さく、ロック競合の可能性は最も低く、同時実行性は最も高くなります。

  • テーブル レベル ロック: MySQL でロックの粒度が最も大きいロック。つまり、現在の操作のテーブル全体をロックします。実装が簡単で、リソースの消費が少なく、ほとんどの MySQL エンジン サポートで使用されます。最も一般的に使用される MyISAM と InnoDB は、テーブル レベルのロックをサポートしています。テーブルレベルのロックは、テーブル共有読み取りロック (共有ロック) とテーブル排他的書き込みロック (排他的ロック) に分けられます。

    特徴: 低いオーバーヘッド、高速なロック、デッドロックなし、大きなロック粒度、ロック競合の可能性が最も高く、同時実行性が最も低い。

  • ページ レベル ロック: これは、ロック粒度が行レベル ロックとテーブル レベル ロックの間である MySQL のロックです。テーブルレベルのロックは高速ですが競合が多く、行レベルのロックは競合がほとんどありませんが低速です。そこで、隣接するレコードのグループを一度にロックする、侵害されたページ レベルが採用されました。

    特徴: オーバーヘッドとロック時間はテーブル ロックと行ロックの間であり、デッドロックが発生します。ロックの粒度はテーブル ロックと行ロックの間で、同時実行性は平均です

#関連する無料学習の推奨事項: mysql ビデオ チュートリアル

以上がmysql データベースのロックは粒度に従って何に分割できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。