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 でカスタム画像を使用してチェックボックスを表示する方法

推薦する

Win7 64 ビット版に MySQL 5.7 をダウンロードしてインストールする際によくある問題の概要

1. 公式ウェブサイトからMySQLをダウンロードします。 これが私たちが探しているものです、win...

Vueリクエストインターセプターの設定方法の詳しい説明

以下の手順に従ってください1. request.jsコンテンツ: http リクエスト インターセプ...

動的なデジタル時計を実装するJavaScript

この記事では、JavaScriptで動的なデジタル時計を実装するための具体的なコードを参考までに紹介...

Vue実戦記録のログインページの実装

目次1. 事前準備1.1 Node.jsをインストールする1.2 webpackをインストールする1...

MySQL パフォーマンスの包括的な最適化方法リファレンス、CPU、ファイルシステムの選択から mysql.cnf パラメータの最適化まで

この記事では、一般的な MySQL 最適化方法をいくつかまとめて簡単に紹介します。これは、フルタイム...

MySQLで日付と時刻を照会する方法

序文:プロジェクト開発では、一部のビジネス テーブル フィールドで日付と時刻の型が使用されることが多...

MySQL サービスに iptables ファイアウォール ポリシーを追加するためのソリューション

MySQL データベースが Centos7 システムにインストールされており、オペレーティング シス...

MySQL学習記録: KEYパーティションが引き起こした血なまぐさい事件

需要背景ビジネス テーブル tb_image のデータの一部は次のとおりです。id は一意ですが、i...

MySQL ステートメントを使用した簡単な追加、削除、変更、クエリ操作の例

この記事では、例を使用して、MySQL ステートメントを使用して、単純な追加、削除、変更、およびクエ...

img usemap 属性 中国地図リンク

HTML img タグ: Web ページに導入される画像を定義します。興味深い usemap 属性も...

MySQL 外部キー制約の詳細な説明

公式ドキュメント: https://dev.mysql.com/doc/refman/5.7/en/...

HTMLチェックボックス説明テキストをクリックして状態を選択/チェック解除します

Web 開発では、チェックボックスは小さく、ユーザーにとって操作があまり便利ではないため、ユーザーが...

TypeScript ジェネリックパラメータのデフォルト型と新しい厳密なコンパイルオプション

目次概要コンポーネントクラスの型定義を作成するジェネリック型を使用してPropsとStateを定義す...

HTML フォーム_PowerNode Java アカデミー

1. フォーム1. フォームの役割HTML フォームは、さまざまな種類のユーザー入力を受け取り、ユー...

CentOS7にMariaDB 10.2.4をインストールする方法の詳細な説明

CentOS 6 以前のバージョンでは、MySQL サーバー/クライアント インストール パッケージ...