1. トランザクションとは何ですか?トランザクションは完全なビジネス ロジック ユニットであり、分割することはできません。 t_act を更新し、balance=balance-10000 として actno='act-001' に設定します。 t_act を更新し、balance=balance+10000 に設定します。ただし、actno='act-0021' です。 上記の 2 つの DML ステートメントは、同時に成功するか、同時に失敗する必要があります。一方が成功し、もう一方が失敗することは許可されません。 2. トランザクションに関連するステートメントは、挿入、削除、更新の3つのDMLステートメントのみです。 「なぜ DML ステートメントは挿入、削除、更新の 3 つだけなのですか?」 3. すべてのビジネス操作を 1 つの DML ステートメントを使用して処理できると仮定した場合、トランザクション メカニズムは依然として必要ですか?取引は必要ありません。 4. 取引の原則知らせ: 5. トランザクションの4つの特性: ACIDトランザクションには4つの主要な特性がある:ACID 以下に、上記のトランザクションの 4 つの主な特性について、さらに詳しく説明します。「原子性」: 一連の操作は成功するか失敗するかのいずれかであり、この一連の操作は分割できません。 6. トランザクション間の分離「トランザクション分離には分離レベルがあり、理論的には 4 つの分離レベルがあります」 1) 第1レベル: コミットされていない読み取り相手方のトランザクションはまだ送信されておらず、現在のトランザクションは相手方が送信していないデータを読み取ることができます。 2) 第2レベル: コミットされた読み取り相手側のトランザクションが送信された後にデータを読み取ることができます。 3) 第3レベル: 繰り返し読み取りこの分離レベルは、繰り返し不可能な読み取りの問題を解決します。 4) 第4レベル: シリアル化可能な読み取りすべての問題を解決しました。 「注目すべきは」 7. デモトランザクション分離レベル(デモデータを自分で作成する)1) トランザクションをデモンストレーションする前に習得する必要がある知識ポイント。1) デフォルトでは、MySQL トランザクションは自動的にコミットされます。 2) 自動コミットとは何ですか? DML ステートメントが実行されるたびに、自動的に 1 回送信されます。 したがって、トランザクションをデモンストレーションする前に、まず自動コミットをオフにする必要があります。 「自動コミットステートメントをオフにする」:トランザクションを開始します。 3) 「トランザクションを示すために知っておく必要がある 3 つのコマンド:」 -- 自動トランザクションコミット機能をオフにします。 トランザクションを開始します。 -- トランザクションをコミットします。 専念; -- トランザクションをロールバックします。最後のコミット ポイントまでのみロールバックします。 ロールバック; 2) グローバルトランザクション分離レベルを設定します。「グローバルトランザクション分離レベルを設定します。設定後、ログアウトして再度ログインしてください。」 -- 最初のレベルをグローバル トランザクション分離レベル read uncommitted に設定します。 -- 2 番目のレベルのグローバル トランザクション分離レベルを読み取りコミットに設定します。 -- 3 番目のレベルを設定します (システムのデフォルトのトランザクション レベル、設定する必要はありません) グローバルトランザクション分離レベルを繰り返し読み取りに設定します。 -- 4 番目のレベルのグローバル トランザクション分離レベルを serializable に設定します。 「グローバル トランザクション分離レベルを表示する」 mysql> @@global.tx_isolation を選択します。 +-----------------------+ | @@global.tx_isolation | +-----------------------+ | 繰り返し読み取り | +-----------------------+ セットに 1 行、警告 1 件 (0.00 秒) 3) コミットされていない読み取りをデモンストレーションします。まず、グローバル トランザクション分離レベルを設定します。 以下は正式なデモンストレーションです。 4) デモの読み取りコミットまず、グローバル トランザクション分離レベルを設定します。 以下は正式なデモンストレーションです。 5) 繰り返し読み取りのデモンストレーションまず、グローバル トランザクション分離レベルを設定します。 以下は正式なデモンストレーションです。 これには注意が必要です: ここで実演されているのは「繰り返し読み取り」です。右のウィンドウでは一連のトランザクション処理を実演しています。左のウィンドウはまったく読み取りできません。左のウィンドウで読み取られるのは、常に元のデータのバックアップ データです。 どのように理解しますか? 左ウィンドウのトランザクション機能もオンになっていることを忘れないでください。トランザクションを開始します。左ウィンドウのトランザクション機能が終了しない限り(コミットまたはロールバックでトランザクションを終了できます)、左ウィンドウによって読み取られるデータは常に元のデータのバックアップ データです。これが「ファンタジー」と呼ばれるものです。右側の黒いウィンドウでどのような変更を加えても、トランザクションをコミットしても、左側のウィンドウには表示されません。 左側に黒いウィンドウがあります。この変更を確認するにはどうすればよいでしょうか? 「 左側の黒いウィンドウのみ、まず現在の黒いウィンドウのトランザクションを終了し、再度読み取ると、実際にデータが変更になったことがわかります。 6) 連続した読み方を実演するまず、グローバル トランザクション分離レベルを設定します。 以下は正式なデモンストレーションです。 「commit」コマンドを使用して左側のウィンドウでトランザクションがコミットされると、右側のウィンドウで変更を確認できます。 上記は、MySQL データベース トランザクション例チュートリアルの詳細な内容です。MySQL データベース トランザクションの詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: Dreamweaver8を使用してウェブサイトのファイルをチェックして整理する方法
MyBatisインターセプターのページング機能を実装する方法序文:まず、実装原則についてお話しします...
この記事では主に、SQL 削除ステートメント DROP、TRUNCATE、および DELETE の違...
新しいserver.jsを作成する糸初期化 -y 糸を追加エクスプレスノードモン -D var ex...
目次1 概念上の区別2 事例紹介3 クエリパフォーマンス4 アップデートのパフォーマンス4.1 記憶...
ボリュームデータボリュームは Docker の重要な概念です。データ ボリュームは、1 つ以上のコン...
[LeetCode] 183.注文しない顧客Web サイトに、Customers テーブルと Or...
①. エイリアス(CNAME)レコードの使用方法:前回の投稿のドメイン名解決では、A レコードの解...
この例では、jQuery を使用してマウス ドラッグ イメージ機能を実装します。まず、ラッパーを設定...
概要いずれかのデータベースに対する操作は他のデータベースに自動的に適用され、2 つのデータベースのデ...
コードをコピーコードは次のとおりです。 <hr style="width:490px...
目次本質的な違いデータベースセキュリティ権限スキーマの移行パターンオブジェクトの類似性スキーマオブジ...
今日、Apache の nginx リバース プロキシを実行していたときに、ちょっとした問題に遭遇し...
目次仕様a. ページファイルはVueの単一ファイルコンポーネント仕様に準拠しています。 b. コンポ...
目次1. 概要2. メモリ管理3. ガベージコレクション4. GCアルゴリズムの紹介5. 参照カウン...
1. HTMLファイルでechartをインポートする <!-- echarts をインポート ...