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;