データベーストランザクション
トランザクションとは?
トランザクションは、作業の整合性を保証します.
すなわち、すべての論理タスクセットを完全に処理または処理できない場合、一部のタスクのみが適用されることを回避するために、元の状態に戻ることができる.
ユーザの観点から,操作の論理単位と理解でき,システムの観点から,データにアクセスまたは変更するプログラムの単位と理解できる.
トランザクションとロック
-ロック:同期を制御する機能
-取引:データの一貫性を確保するための機能
勘定科目のデータ整合性:データ値が正確である必要があります.
つまり、話にならないデータがあってはいけない.
勘定科目のデータの一貫性:一貫性があり、矛盾しない
->つまり、一部のデータの値は互いに一致しなければならない.
🔒 ロック:複数のコネクタが同じリソース(レコードまたはテーブル)を同時に要求する場合、1つの時点で1つのコネクタしか変更できません.
🔒 ≪トランザクション|Transaction|emdw≫:1つの論理アクション・セットに1つのクエリーがあるか、2つ以上のクエリーがあるかにかかわらず、論理アクション・セット自体が100%適用されるか、適用されないかを確認します.
トランザクションのプロパティ
トランザクションはACIDの4つの特性を満たす必要があります。
1.原子性
取引中に問題が発生した場合は、問題が発生しない限り、すべての操作を実行する必要があります.
2.一貫性
トランザクションが完了した場合でも、トランザクションが発生する前と同じように、データの一貫性を確保します.
3.孤立性(Isolation)
すべての取引は独立して完成しなければならず、互いに干渉しない.
4.持続可能性
トランザクションが正常に終了したら、タスクの結果をデータベースに永続的に保存する必要があります.
取引ステータス
Active
トランザクションのアクティブな状態.トランザクションは実行中であり、アクション中の状態です.
Failed
トランザクションの失敗ステータス.取引がこれ以上正常に行われない状態を指す.
Partially committed
トランザクションのコミットコマンドが到着しました.トランザクションのコミット前のsql文が実行され、コミットされたステータスのみが残ります.
Commited
トランザクションの正常な完了ステータス
Aborted
トランザクションのキャンセルステータス.トランザクションをキャンセルし、トランザクションを実行する前のデータのステータスに戻ります.
「協力提出」と「Committed」の違い
Commitリクエストの受信->PartialCommed
取引の使用上の注意事項
トランザクションは、必要最小限のコードにのみ使用することが望ましい.
どうしたんですか。🤷🏻♀️
一般的に、データベース接続の数は限られています.ただし、単位プログラムごとにコネクタを持つ時間が長い場合は、空きコネクタの数が減少します.これにより、コネクタを単位図ごとに取得するために必要な待機がある場合がある.
硬直状態(Deadlock)
行き詰まりとは
硬直状態とは、2つ以上のトランザクションがリソースのロックを取得すると同時に、別のトランザクションに要求されるロックであり、どのくらい待っても状況は変わりません.
MySQLでの行き詰まりの例
MySQL MVCCの機能に従って、トランザクションで更新操作を実行するとロックが得られます.
マルチバージョン同時制御(MVCC)
これは、同期性を制御するために同時にアクセスできるデータベースの1つです.
•従来のRDBMSよりも高速
トランザクション1がテーブルBの最初のロー・ロックを取得し、トランザクション2もテーブルAの最初のロー・ロックを取得したと仮定します.
トランザクションをコミットせずに最初のローのロックを要求した場合、
Transaction 1> insert into A values(1);
Transaction 2> insert into B values(1);
ERROR 1213 (40001): Deadlock found when trying to get lock; try restarting transaction
Deadlockが発生しました.Deadlockの周波数を下げる方法
上で、トランザクション1はテーブルB->Aの順にアクセスし、トランザクション2はテーブルA->Bの順にアクセス->トランザクションを同じテーブルの順に折りたたむために、
Reference
この問題について(データベーストランザクション), 我々は、より多くの情報をここで見つけました https://velog.io/@dewgang/데이터베이스-트랜잭션テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol