mysql トランザクション処理に関する概要:
1. トランザクションとは何ですか?
MySQL トランザクションは主に、大規模な操作と複雑性の高いデータを処理するために使用されます。
たとえば、人事管理システムでは、個人を削除する場合、その個人の基本情報だけでなく、その個人に関連する情報も削除する必要があります。メールボックス、記事などとして。お待ちください。このように、これらのデータベース操作ステートメントはトランザクションを構成します。
2. トランザクションの利用条件MySQL でトランザクションを利用するには、MySQL のストレージ エンジンのサポートが必要です。 MySQL でトランザクションをサポートするものは、
InnoDB、NDB
cluster
、サードパーティのストレージ エンジンには、
とXtrDB
.
3-1. アトミック性
#トランザクションは分割できないものとして扱う必要があります。最小の作業単位であり、各トランザクションのすべての操作は成功または失敗する必要があります。
一部の操作が失敗し、一部の操作が成功するということは決してあり得ません。
3-2. 一貫性一貫性は上記の例と同様で、例外が発生してもデータは正しいままです。つまり、トランザクションの実行に失敗した場合でも、
データは異常事態の影響を受けず、常に正確性を維持します。
3-3. 分離#トランザクションがまだ送信されていない場合、各トランザクションは互いに分離されており、相互の影響を受けません。 ##トランザクションが送信されると、変更はデータベースに永久に保存されます。
#4. トランザクション分離レベル
4 -1. コミットされていない読み取り
1 つのトランザクションでデータに加えられた変更がコミットされていない場合でも、その変更は他のトランザクションに表示されます。この場合、ダーティ リードが発生しやすくなり、影響を受けます。 .4-2. コミットの読み取り
トランザクションが開始されると、送信された他のトランザクションのみが表示されます。
#4-3. 繰り返し可能な読み取りレコードを複数回読み取った結果反復可能な読み取りは、上記の反復不可能な読み取りの状況を解決できますが、トランザクションが特定の範囲のレコードを読み取り中に、別のトランザクションがこの範囲に新しいデータを挿入するという状況があります。トランザクションが再度データを読み取ると、
最初の読み取りよりも 1 つ多くのレコードがあることがわかります。これはいわゆるファントム読み取りです。2 つの読み取りの結果は一致しません。
4-4. Serializable
Serialization はキューのようなもので、各トランザクションはキューに入れられて実行を待ち、前のトランザクションが送信されて初めて次のトランザクションを操作できます。
##この状況では上記のファントム読み取りは解決できますが、各データにロックが追加されるため、多数のロック タイムアウトやロックの競合が容易に発生する可能性があります。一部のハイエンド アプリケーションには適していません。同時ビジネス シナリオの場合。4-5. 分離の概要
上記の例を通じて、ダーティ リードが簡単にわかります。
#5. 複数のストレージ エンジンを使用する場合のトランザクション処理方法によると、非反復読み取りはデータの更新に重点を置き、ファントム読み取りはデータの挿入に重点を置きます。上記のトランザクションで使用されている条件を確認すると、一部のストレージ エンジンがトランザクションをサポートしていないことがわかります。たとえば、
MyISAMストレージ エンジンはトランザクションをサポートしていません。
トランザクション ストレージ エンジンと非トランザクション ストレージはトランザクションで使用されます。送信は正常に続行できますが、非トランザクション ストレージ エンジンをロールバックすると、応答エラー メッセージが表示されます。特定の情報はストレージ エンジンに関連しています。
6.トランザクションの使用方法MySQL のトランザクションは暗黙的に有効になっています。つまり、SQL ステートメントはトランザクションです。SQL ステートメントが実行されると、トランザクションが送信されます。デモでは、明示的に
7. mysql の自動送信前述したように、MySQL のトランザクションは暗黙的に有効になっており、各 SQL が自動的に送信され、必要な処理が必要になります。
オプションを設定する必要があります。
8. トランザクションの分離レベルを設定しますset session transaction isolation level 隔离级别;
https://www.php.cn/course/list/51/type/2.html
以上がデータベーストランザクション処理に関するいくつかの問題の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。