2.2 MySQLのロック

1.ロックカテゴリ

操作の1.部門:DMLロック、DDLロック

2.ロック粒度分割:テーブルレベルロック、行レベルロック、ページレベルのロック

共有ロックと排他ロック:ロックレベルの部門をクリックします3.

分割による方法ロック4:自動ロックは、ディスプレイをロック

5.分割:楽観的ロック、悲観的ロック

2. 楽観的ロックの実装

1.商品を取得するたびに、品物はロックしません。

2.在庫がデータベース内のプログラムの銘柄を比較する必要があり、彼らは更新に等しい場合、データを更新する度に等しいです

3.逆プログラムは、2つの値は、インベントリデータの更新前に等しくなるまで再び比較し、インベントリを検索します。


####楽観的ロックは、プラスの操作コードを達成します
#私たちは、数1の動作は、値がプログラムの値に等しい場合にのみ、ロックされ、データベースが実際に実装されている場合にのみ見ることができます。
「」」
//ロックを解除
選択ID、名前、ID = 1株;
//ビジネスプロセス
ベギン;
更新ショップセットストック=ストック-1、ID = 1及び在庫=ストック。
コミット;
「」」

3.悲観的ロック

1.たび品、雑貨プラス排他ロックを取得。

記録へのアクセスのためのブロック待機中にユーザA、他のユーザーのid = 1つの製品情報を取得し、ロック銀行の買収の記録である2。


####は、悲観的ロック操作コードを達成するために添加しました
#私たちは、お店の情報を取得するプロセス全体に最初のオープンを開始、ロックされているデータを通じて物事を見ると、データの一貫性を確保するために、データを変更することができます。
「」」
ベギン;
更新用ID = 1店舗からold_stockとしてID、名前、在庫を選択します。
更新ショップセットストック=ストック-1、ID = 1及び在庫= old_stock。
コミット
「」」

4. 排他ロック

AへのトランザクションTプラス他のトランザクションに排他ロックがロックの任意のAタイプを追加することができた場合、書き込みロックとして知られている1.排他ロック。トランザクションデータのロックの行だけでなく、書き込みデータの両方を読み取ることができます。

2.用法:SELECT ... FOR UPDATE

共有ロック(共有ロック)

1.共有ロックがAにトランザクションTプラス共有ロックあれば、他のトランザクションのみA共有ロックと組み合わせることができる、読み取りロックと呼ばれ、他のロックは追加できません。

2.許可された共有ロックの取引のみのデータではなく、書き込みデータを読み取ることができます。

3.用法:SELECT ... LOCKを共有MODE;

おすすめ

転載: www.cnblogs.com/lihouqi/p/12664255.html