基礎 トランザクションは、SQL ステートメントのグループに対するアトミック操作です。つまり、グループ内の SQL ステートメントの 1 つでエラーが発生した場合、同じグループ内の他の SQL ステートメントは実行されません。 テストとして使用できます。一連の SQL ステートメントを実行した後、結果が正しいかどうかを確認できます。正しい場合は、送信を選択できます。正しくない場合は、ロールバックして元の状態に戻すことができます。 MySQL では、すべての操作はデフォルトで自動的にコミットされ、トランザクションが開始されると手動でコミットされます。 基本的な使い方 別途開く 単一のオープンとは、SQL ステートメントのグループに対してトランザクションを開くことを意味します。 テーブルユーザーの作成( id INT UNSIGNED AUTO_INCREMENT 主キー、 名前 CHAR(12) NOT NULL, バランス INT UNSIGNED ); -- ユーザーテーブルを作成する INSERT INTO user(name,balance) VALUES (「ユンヤ」1000年) ("Ken",500); -- データを挿入します start transaction; -- トランザクションを開始します。すべての追加、削除、および変更操作は手動で送信する必要があります UPDATE user SET balance = 500 WHERE name = "Yunya"; -- Yunya は Ken に 500 を送金します UPDATE user SET balance = 1000 WHERE name = "Ken"; SELECT * FROM user; -- エラーがあるかどうかを確認します COMMIT; -- トランザクションをコミットします: 上記の2つのUPDATEを手動でコミットします -- ROLLBACK; -- トランザクションのロールバック: 転送量が正しくない場合は、ロールバック BEGIN を使用します -- トランザクションを閉じると、すべての追加、削除、変更操作が自動的にコミットされます グローバルに有効化 すべての SQL ステートメントがトランザクション操作を使用する場合は、SET AUTOCOMMIT=0 で自動送信をオフにしてトランザクション メカニズムを有効にし、すべてのステートメントがトランザクション タイプになるようにすることができます。 -- 自動コミットをオフにする SET AUTOCOMMIT = 0; ユーザー(名前、残高)に値を挿入 (「ジャック」、8000) 専念; -- 自動コミットを有効にする SET AUTOCOMMIT = 1; トランザクション分離 同時実行の問題 同時実行性の高いアクセスで複数のトランザクションの分離の問題が発生すると、次のようなことが起こる可能性があります。 ダーティ リード: トランザクション A がトランザクション B によって更新されたデータを読み取り、その後 B が操作をロールバックします。この場合、A によって読み取られたデータはダーティ データです。非反復読み取り: トランザクション A が同じデータを複数回読み取ります。トランザクション A がデータを複数回読み取るプロセス中に、トランザクション B がデータを更新してコミットするため、トランザクション A が同じデータを複数回読み取ると、結果が不一致になります。 分離レベル システムのデフォルトの分離レベルはレベル 3 であり、ファントム リードが発生する可能性があります。
クエリ設定 クエリ分離レベル @@tx_isolation を選択します。 分離レベルの設定 set session トランザクション分離レベル read uncommitted; -- set session は現在のセッションに対してのみ有効で、set global はグローバルに有効です。 上記は、MySQL がトランザクションを使用する方法の詳細です。MySQL トランザクションの詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: Vueはechartを使用してラベルと色をカスタマイズします
この記事では、参考までにMySQL 8.0に接続できないJavaの問題をまとめて紹介します。具体的な...
序文スロークエリとは何か、またスロークエリを最適化するにはどうすればよいか。以下では、これら 2 つ...
HTTP圧縮とは場合によっては、比較的大きなメッセージ データがクライアントとサーバー間で送信され、...
MySQL テーブルでの接続方法は実は非常に簡単なので、ここではその特徴を簡単にリストします。テーブ...
ページを作成するときに、ページの見栄えを良くするために、背景画像を設定する必要があることがよくありま...
LNMPのようなアーキテクチャを持つウェブサイトは、一般的にPHPフレームワークに基づいて開発されて...
目次1. オブジェクト1.1 オブジェクトとは何ですか? 1.2 なぜオブジェクトが必要なのか? 2...
Mac システムには PHP と Apache が付属していますが、必要なバージョンではない場合があ...
序文皆さんご存知のとおり、MySQL の運用・保守において、更新/削除条件が誤っているためにデータが...
序文データ中心のアプリケーションの場合、データベースの品質はプログラムのパフォーマンスに直接影響する...
要素にクラスを追加/削除することは、プロジェクト開発では非常に一般的な動作です。たとえば、Web サ...
目次1. Vue3コンポーネント通信方式2. Vue3通信の使い方2.1 小道具2.2 $エミット2...
*** ハイパーリンクのスタイル設定の例a:link クリックされる前のハイパーリンクの状態a:vi...
Idea は既存の Web プロジェクトをインポートして Tomcat に公開しますが、Tomcat...
1. ウィンドウ -> 設定を選択してEclipseの設定パネルを開きます。 2. 「設定」ウ...