悲観的ロック 悲観的ロックは、データを悲観的であるとみなします。データをクエリするときに、ロックを追加します。ロックを取得するまで他のスレッドによる改ざんを防止します。 例えば、次の表があります。 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 をご愛顧いただき、誠にありがとうございます。 以下もご興味があるかもしれません:
|
a タグではクリック イベントがよく使用されます。 1. href="javascript...
純粋な CSS3 で実装された美しい入力ボックス アニメーション スタイル ライブラリを共有します ...
MySQLをダウンロード5.1.1.1 より前のバージョン私のコンピュータは64ビットなので、Win...
ブラウザはおそらく私たちにとって最も馴染みのあるツールです。 Firefox、Opera、Safar...
目次1.1. IP経由のコンテナ間のネットワークアクセス1.2. コンテナ名またはコンテナIDによる...
簡単な説明これは CSS3 のクールな 3D キューブのプリロード効果です。この特殊効果は、シンプル...
1. リンク解除機能ハード リンクの場合、unlink はディレクトリ エントリを削除し、inode...
目次序文$属性例: $listeners (公式説明)使用シナリオ要約する序文複数レベルのコンポーネ...
目次バッチコピー copyWithin()配列を埋めるメソッド fill()指数の計算方法については...
VMware のインストールパッケージのインストールダウンロードアドレス: https://www....
目次原理ソースコード分析委任されたイベントバインディングすべてのサポートされているイベントを聴くネイ...
目次I. 概要2. 従来の多段階イメージ構築3. Buildkitを使用してイメージをビルドする4....
目次概要問題の説明循環リンクリスト順序付き配列数学的再帰要約する概要ジョセフ・リング問題は、ジョセフ...
時間フィールドは、データベースの使用時によく使用されます。よく使われるのは作成時間と更新時間です。し...
1.メニューバーにスタートと入力し、スタートアップアプリケーションをクリックして入力します。 2. ...