トランザクション分離レベルの設定 グローバルトランザクション分離レベルを読み取りコミット済みに設定; //グローバルセッショントランザクション分離レベルを読み取りコミット済みに設定; //現在のセッション トランザクションの送信方法を変更する(自動的に送信するかどうか、MySQL はデフォルトで自動的に送信します) SET AUTOCOMMIT = 1; // 自動的にコミット、0 手動でコミット 異なるデータベース エンジンには異なる MVCC モードがあり、通常は楽観的同時実行制御と悲観的同時実行制御です。 インノDB 例: InnoDB の MVCC は、レコードの各行の後に 2 つの隠し列を保存することによって実装されます。これら 2 つの列の 1 つは行の作成時刻を格納し、もう 1 つは行の有効期限 (または削除時刻) を格納します。もちろん、保存されるのは実際の時間値ではなく、システムのバージョン番号です。新しいトランザクションが開始されるたびに、システムのバージョン番号は自動的に増加します。トランザクション開始時のシステムバージョン番号は、照会されたバージョン番号と比較するためのトランザクションバージョン番号として使用されます。 選択 InnoDB は各行を次の 2 つの条件と照合します。 a. InnoDB は、現在のトランザクション バージョンよりも前のバージョンのデータ行のみを検索します (つまり、行のシステム バージョン番号がトランザクションのシステム バージョン番号以下です)。これにより、トランザクションによって読み取られる行は、トランザクションの開始前に存在していたか、トランザクション自体によって挿入または変更されたことが保証されます。 b. 削除された行のバージョンは未定義であるか、現在のトランザクション バージョン番号より大きいです。これにより、トランザクションによって読み取られた行が、トランザクションの開始前に削除されていないことが保証されます。 上記の 2 つの条件を満たすレコードのみがクエリ結果として返されます。 入れる InnoDB は、新しく挿入された各行の行バージョン番号として現在のシステム バージョン番号を保存します。 消去 InnoDB は、削除された各行の行削除識別子として現在のシステム バージョン番号を保存します。 アップデート InnoDB は、新しい行を挿入するときに現在のシステム バージョン番号を行バージョン番号として保存し、行削除マーカーとして元の行に現在のシステム バージョン番号を保存します。 知らせ: MVCC は、REPEATABLE READ および READ COMMITED 分離レベルでのみ機能します。他の 2 つの分離レベルは MVCC と互換性がありません。READ UNCOMITTED では、現在のトランザクション バージョンに準拠するデータ行ではなく、常に最新のデータ行が読み取られるためです。 SERIALIZABLE はすべての読み取り行をロックします。 テーブルの状態を確認する 'task' のようなテーブル ステータスを表示します\G; ダーティリード、非反復リード、ファントムリード ダーティ リード: 現在のトランザクションは別のトランザクションのコミットされていない状態を読み取りますが、トランザクションは分離されていません。 反復不可能な読み取り: トランザクションの分離は達成されますが、同じデータが 2 回読み取られるとデータの不整合が見つかります。 ファントム リード: 同じデータ バッチを 2 回クエリすると、新しいデータが挿入されたことがわかります。これは主に、他のトランザクションがデータ セットの途中でデータを挿入したためです。 (ギャップロックを追加するとこの問題は解決します) 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: MySQLにおける分散ロックの考え方をDBの助けを借りて詳しく説明します
この記事の例では、スライディングブロック効果を実現するための小さなプログラムの具体的なコードを参考ま...
画面紹介Screen は、コマンドライン端末切り替え用に GNU プロジェクトによって開発されたフリ...
実験環境: 1. CentOS 7 サーバー 3 台2. mysql5.7.26 (3台のマシンはす...
目次1. NFS の概要2. NFS構築1. NFSサーバーの構築2. NFSクライアントの構築3....
この記事は MySQL 公式サイトを参考にしてまとめたものであり、遭遇したいくつかの問題も記録されて...
この記事の例では、スライダー検証を実装するためのjsキャンバスの具体的なコードを参考までに共有してい...
この記事の例では、テーブル行データのスクロール効果を実現するためのjQueryの具体的なコードを参考...
目次2. 試した方法2.1 キープアライブ2.2 ネストされたルートを持つ CSS 3. 機能説明4...
MySQL タイム ブラインド インジェクションの 5 つの遅延方法 (PWNHUB の予期しない解...
目次1. はじめに2. 準備3. スクリプトプロジェクトの構築4. コードの作成と実行5. まとめと...
「私たちは次の一連のモバイル製品を HTML5 で作成しています。」 「ええ、最近は多くの人が Ap...
著者: Guan Changlong は、Aikesheng の配送サービス部門の DBA です。主...
nginx の HTTP モジュールを作成する場合、リクエスト開始時のアクセス許可の有無、コンテンツ...
CSS には、一般的には使用されない 2 つの疑似クラス、before と :after があります...
説明するこの記事では、Vue テクノロジーに基づいて再帰コンポーネントを実装する方法を紹介します。 ...