MySQL トランザクション分析

MySQL トランザクション分析

取引

トランザクションはビジネス ロジックの基本単位です。

各トランザクションは一連の SQL ステートメントで構成されます。

トランザクションに関連する DML ステートメント ( insertdeleteupdate )

トランザクションの存在により、データのセキュリティが確保されます。

トランザクションのメカニズム:

DML ステートメントを実行するたびに操作は記録されますが、データは変更されません。

最後に、トランザクションをコミット(レコードを削除、ハードディスクのデータを変更)するか、トランザクションをロールバック(レコードを削除、データを変更しない)します。

トランザクションには4つの主要な特性がある:ACID

  • A: アトミック性、トランザクションは作業の最小単位です
  • C: 一貫性、トランザクション内の DML ステートメントはすべて成功するか、すべて失敗するかのいずれかです。
  • I: 分離、トランザクション間の分離。
  • D: 永続性。データは最終的に終了する前にハードディスクに永続化されます。

トランザクション分離レベル:

1. read uncommittedトランザクションが別のトランザクションがコミットしていないデータを読み取ることができることを意味します。

このレベルではダーティリード現象が発生します

2. ead committedされたデータを読み取ることができます

このレベルではダーティ リードの問題は解決されますが、繰り返して読み取ることはできません。

3. repeatable read : トランザクションによって読み取られるデータは、他のトランザクションによって送信されたデータとは独立しています。トランザクションの開始時のデータは繰り返し読み取ることができます。

反復不可能な読み取りの問題は解決されましたが、ファントム読み取りは依然として存在し、読み取られたデータは実際のものではありません。

4. シリアル読み取り/シリアル読み取り。マルチスレッドのスレッドセーフと同様に、すべての問題が解決されます。しかし、非効率な部分もあります。トランザクションをキューに入れる必要があるためです。

mysqlデータベースのデフォルトの分離レベルはレベル 3 です。繰り返し読み取り可能。

mysqlトランザクションはデフォルトで自動的にコミットされます。 DML を実行して、ハードディスク上のデータを直接変更します。

トランザクションを手動でコミットします。 DML を実行する前に。まずstart transaction 、次にDMLを実行し、最後にコミットまたはロールバックします。

トランザクションの手動ロールバックをデモンストレーションします。

t_user1 が存在する場合はテーブルを削除します。

テーブルt_user1を作成します(

id int(3) 主キー auto_increment,

ユーザー名varchar(10)

);

mysql> テーブル t_user1( を作成します。

-> id int(3) 主キー auto_increment,

-> ユーザー名 varchar(10)

-> );

クエリは正常、影響を受けた行は 0 行 (0.02 秒)

mysql> t_user1(ユーザー名) に値('h1') を挿入します。

クエリは正常、1 行が影響を受けました (0.01 秒)

mysql> t_user1 から * を選択します。

+----+----------+

| ID | ユーザー名 |

+----+----------+

| 1 | h1 |

+----+----------+

セット内の 1 行 (0.00 秒)

mysql> rollback; // トランザクションのロールバック クエリは正常、0 行が影響を受けました (0.00 秒)

mysql> select * from t_user1; //ロールバック後も、mysqlが自動的に送信するため、以前と同じになります +----+----------+

| ID | ユーザー名 |

+----+----------+

| 1 | h1 |

+----+----------+

セット内の 1 行 (0.00 秒)

mysql> start transaction; // トランザクションを手動で開始し、自動トランザクション送信をオフにします。クエリは正常で、0 行が影響を受けました (0.00 秒)

mysql> t_user1(ユーザー名) に値('h2') を挿入します。

クエリは正常、1 行が影響を受けました (0.01 秒)

mysql> t_user1(ユーザー名) に値('h3') を挿入します。

クエリは正常、1 行が影響を受けました (0.00 秒)

mysql> t_user1(ユーザー名) に値('h4') を挿入します。

クエリは正常、1 行が影響を受けました (0.00 秒)

mysql> t_user1 から * を選択します。

+----+----------+

| ID | ユーザー名 |

+----+----------+

| 1 | h1 |

| 2 | h2 |

| 3 | h3 |

| 4 | h4 |

+----+----------+

セット内の 4 行 (0.00 秒)

mysql> rollback; // ロールバッククエリは正常、0 行が影響を受けました (0.01 秒)

mysql> t_user1 から * を選択します。

+----+----------+

| id | ユーザー名 | 結局、ハードディスク上のデータは以前と同じままです。

+----+-----------+ ハードディスク上のデータを変更せずに削除レコードをロールバックします。

| 1 | h1 |

+----+----------+

セット内の 1 行 (0.00 秒)

これで、MySQL トランザクション分析に関するこの記事は終了です。MySQL トランザクションに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL トランザクションの詳細
  • MySQL データベースのインデックスとトランザクション
  • MySQL トランザクションと分離レベルの基本原理の簡単な分析
  • MySQLデータベースのトランザクションとインデックスの詳細な説明
  • MySQL トランザクション分離はどのように実現されますか?
  • MySQLトランザクションの詳細な分析

<<:  Nodejsはgitee実装コードに自動的に同期するドキュメント同期ツールを作成します

>>:  HTML でカスタム画像を使用してチェックボックスを表示する方法

推薦する

WeChatアプレットで計算機機能を実装する

この記事は、WeChat アプレットを使用して作成された簡単な計算機です。興味のある方はご覧ください...

jsで七夕告白連打の効果を実現、jQueryで連打技術を実現

この記事では、jsとjQueryテクノロジーを使用して告白弾幕を実現する方法を紹介します。具体的な内...

Alibaba Cloud Docker Yum ソースを使用した Docker 17.03.2 の CentOS7 オンラインインストールの詳細説明

参照ドキュメント公式 Docker インストール ドキュメント: https://docs.dock...

mysql 5.7.11 winx64.zip インストールと設定方法のグラフィックチュートリアル

MySql データベース システムをインストールして構成します。 1. ダウンロード http://...

WeChatアプレットがジグソーパズルゲームを実装

この記事では、WeChatアプレットでジグソーパズルゲームを実装するための具体的なコードを参考までに...

MySQLの論理アーキテクチャに関する深い理解

MySQL は現在、ほとんどの企業や事業体で使用されているデータベースです。MySQL が使用される...

リアルタイムクロックを実装するネイティブJS

ネイティブ JS で実装したリアルタイム クロック エフェクトを共有します。エフェクトは以下のとおり...

JavaScript でネットワーク速度をテストする方法

目次序文ネットワーク速度のフロントエンド判定原理のまとめ1. img を読み込むか Ajax リクエ...

MySQLはSQL文を使用してテーブル名を変更します

MySQL では、SQL ステートメント rename table を使用してテーブル名を変更できま...

MySQL 8.0.15 のインストールと設定方法のグラフィック チュートリアル (Windows 10 X64)

最近私が学んでいるのは MySQL の知識なので、MySQL をインストールすることが非常に重要です...

Linux の一般的な Java プログラム起動スクリプトのコード例

シェルを起動する頻度は非常に低いですが。 。 。しかし、書くたびに、多くの jar ファイル パスを...

MLSQLコンパイル時権限制御例の詳細な説明

序文MySQL の権限を簡単に理解すると、MySQL では自分の能力の範囲内で操作が許可され、その限...

効率化に役立つ 20 の CSS コーディングのヒント (並べ替え)

この記事では、主要な CSS ウェブサイトで推奨されている 20 個の便利なルールとベスト プラクテ...

3分でUbuntu 16.04を初期化し、Java、Maven、Docker環境をデプロイする

Fast-Linux プロジェクト アドレス: https://gitee.com/uitc/Fas...