データベースのロック機構は、データの一貫性を確保するためのデータベースであり、簡単であり、同時にアクセス規則的に様々な共有リソースは、設計の順番になります。データベースの任意の種類のためには、適切なロック機構を持っている必要がありますので、当然MySQLは例外ではありません。独自のMySQLデータベースアーキテクチャ、データ・ストレージ・エンジンの種々は同じではありませんする各アプリケーションシナリオのストレージエンジンの特性は、それらの特定のアプリケーションシナリオのニーズを満たすために、各ストレージエンジンロック機構は、ためのもので、ありますそれぞれが特定のシーンに直面し、設計を最適化するため、各ストレージエンジンのロック機構もかなり異なっています。各MySQLストレージエンジンは、ロック機構3種類(レベル)を使用して:テーブルレベルロック、行レベルのロック、ページレベルのロック。
分類ロック
テーブルロックを
テーブル・レベルのロックは、ロック機構の各最大粒度にMySQLのストレージエンジンです。ロック機構の最大の特徴は、ロジックは非常に単純で実装することである、システム上の最小の負の影響をもたらします。だから、ロックを取得し、すぐにロックを解除します。テーブルレベルロックは、テーブル全体をロックしますために、私たちを苦しめるデッドロックを回避するために良いことができます。
利点:小さなオーバーヘッドは、高速ロック、デッドロックではありません
短所:大グレインロック、並行性の最高と最低度のロック競合の確率
ページ・ロック
MySQLでのページレベルのロックは、あまりにも一般的ではありません、他のデータベース管理ソフトウェアでは、比較的ユニークなロックレベルです。行レベルロックテーブルレベルロックの間に機能をロックするページレベルのロック粒度は、ロックオーバーヘッドリソースを取得するために必要とされ、また、上記の二つの間に介在される並行処理を提供することができます。また、ページレベルのロックと行レベルのロック、デッドロックが発生しています。
利点:コストと時間境界ロックテーブルと行ロックの間に、テーブルと行ロックの間のロック粒度境界、一般的な並行処理
短所:デッドロックが発生します
行ロック
行レベルの最大の機能をロックするオブジェクトが非常に小さい粒子でロックすることで、現在、最小粒度を達成するための主要なデータベース管理ソフトウェアでロックされています。ロック粒度が小さいので、発生したロックされたリソースの競合の確率が最小であるため、アプリケーションは、同時処理能力の最大の可能な数を与え、高い全体的なシステム性能を必要とする同時アプリケーションを向上させることができます。
長所:最小サイズとロック競合の最低の確率でなく、同時実行の最高度をロック
短所:大きなオーバヘッド、低速ロック、デッドロックを生成します
MyISAMテーブル
MyISAMテーブルは、非トランザクションテーブルロックのタイプは、唯一のストレージエンジンをサポートしています。ロック機構は完全にMySQLのテーブルレベルのロックの実装によって提供される使用します。
共有テーブルがロック(表リードロックを)読んで、排他的な書き込みロックテーブル(表ロックを書く):MySQLのテーブルレベルのロックは、2つのモードがあります。互換性のロック・モード:
1.読みMyISAMテーブル、他のユーザーが同じテーブルの読み取り要求をブロックしませんが、同じテーブルへの書き込み要求をブロックします。
2. MyISAMテーブルは、書き込み動作、その他はブロックされますユーザーが読んで、同じテーブルの動作を書きます。
MyISAMテーブルロック方法:
(SELECT)のクエリを実行する前にMyISAMテーブルは、自動的に読み取りロックに関係するすべてのテーブルに追加されます。
書き込みロックに関する更新操作の前に(UPDATE、DELETE、INSERT、など)、自動的にテーブルに追加され、プロセスは、ユーザの介入を必要とせず、したがって、ユーザは、一般的に直接LOCKテーブルのMyISAM明示的ロック・テーブルを指示する必要はありません。 。