悲観的ロック 悲観的ロックは、データを悲観的であるとみなします。データをクエリするときに、ロックを追加します。ロックを取得するまで他のスレッドによる改ざんを防止します。 例えば、次の表があります。 status=1 は注文が可能であることを意味します。status=2 は注文が不可能であることを意味します。同時実行プロセス中に 2 人のユーザーが同時にステータス = 1 をチェックすると、論理的には両方のユーザーが新しい注文を追加できますが、これにより製品の過剰販売が発生します。 次の例 テーブル「goods」を作成する( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) デフォルト NULL, `status` tinyint(4) デフォルト NULL, `version` int(11) デフォルト NULL, 主キー (`id`) ) エンジン=InnoDB AUTO_INCREMENT=2 デフォルト文字セット=utf8mb4 demo.goods (id、name、status、version) に VALUES (1、'test'、1、1) を挿入します。 セッション1の実行 自動コミットを0に設定します。 始める; *を選択 id=1 かつ goods.status=1 の goods から更新します。 商品を更新します。ID=1 の場合、ステータスを 2 に設定します。 セッション2実行 始める; 更新のために、id=1 の商品から * を選択します。 この時点では、ロックがまだセッション 1 にあるためセッション 2 はブロックされており、ロックは常に待機状態になっています。セッション1が送信されない場合、セッション2は一定時間後にタイムアウトして切断され、
特定のロック待機時間は、innodb_lock_wait_timeout パラメータを設定することで制御できます。 この時点でセッション 1 でコミット操作が実行されると、セッション 2 はクエリ結果を取得し、ロックはセッション 2 に与えられます。 また、 'innodb_row_lock_%' のようなステータスを表示します。 ロック情報をさらに表示します。 楽観的ロック 楽観的ロックは悲観的ロックとは異なります。楽観的ロックは、mySql 自体ではなく、独自のプログラムを通じて実装されます。 楽観的ロックではクエリはロックされず、更新時にバージョン番号のみがチェックされます。 例えば、goodsテーブルをクエリしてバージョンが1であることがわかった場合、このテーブルを更新すると、SQLは次のようになります。 id=1 の商品から * を選択します。 商品を更新します。ステータスを 2、バージョンをバージョン + 1 に設定します (ID は 1、バージョンは 1)。 ここでのバージョンはクエリ時のバージョン番号であり、変更するたびにバージョンが +1 になります。バージョン番号が一致しない場合は更新は成功しません。 要約する 以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。 以下もご興味があるかもしれません:
|
1. 要素の幅/高さ/パディング/マージンのパーセンテージ基準要素の幅/高さ/パディング/マージンの...
序文ヒント: ここで、この記事に記録するおおよその内容を追加できます。例えば、人工知能の継続的な発展...
目次初期化初期化状態()初期化プロパティ()初期化データ()観察する()オブザーバーリアクティブを定...
<br />Web2.0とは何ですか? Web2.0にはソーシャルネットワーク製品とその...
私は長い間 CSS を使用してきましたが、Web 要素の関連属性を設定するために常に「px」を使用し...
1. ログセグメンテーションのためのLog4j 1) log4j-1.2.17.jar、tomcat...
1. 公式ウェブサイト www.mysql.com にアクセスし、ダウンロードを選択します。 2. ...
インターネット上の this.$set の説明はわかりにくいと感じます。単一データ、オブジェクト、配...
障害に遭遇すると、障害の根本的な原因を考えるのではなく、障害を解決する方法を考えることがよくあります...
ポート80も設定されています。まずファイアウォール設定ファイルを入力しますシェル># vim ...
Linux でバージョン情報を表示する方法。ビット数、バージョン情報、CPU コア情報、CPU 固有...
垂直方向では、セルの配置を上、中央、下に設定できます。基本的な構文<TD VLIGN=&quo...
ヒント:配列変更メソッドによりv-forが更新され、ページが更新されます。配列を変更しないメソッド:...
思いつきで、小さなボールが跳ね返るケーススタディを書いてみました。具体的な内容は以下のとおりです。主...
CSSファイルに書き込むコードをコピーコードは次のとおりです。 01.html {グレイスケール(1...