水文:事務(未完)
5010 ワード
取引
文書ディレクトリ
1.取引/データベース取引
1.1定義
トランザクション.アクティビティに関連するすべての操作を分割できない実行ユニットに組み入れるメカニズムを提供します.この実行ユニットのすべての操作がすべて成功してから実行トランザクションが計算されます.そうしないと、トランザクション全体がロールバックされます.
要するに、トランザクションは「すべて成功するか、すべて失敗するか」というメカニズムを提供します.
説明:トランザクションはストレージエンジンで実装されます.トランザクションをサポートするストレージエンジンには、InnoDB、NDB Clusterなどがよくありますが、サポートされていないのはMyISAMとMemoryです
1.2特性:ACID
ACIDとは、データベースが正しく実行する4つの基本的な特性の略です.
Prepare:MySQLログ
バイナリ・ログ、エラー・ログ、クエリー・ログ、遅いクエリー・ログなど、ログ・タイプはさまざまです.
InnoDBには、redo log(REDOログ)とundo log(ロールバックログ)の2つのトランザクション・ログがあります.
原子性:Atomicity
定義:トランザクションは分割できない実行ユニットです.
実装:unod log.
: 、 rollback
: undo log , insert, delete; delete, insert...
コンシステンシ:Consistency
隔離性:Isolation
役割は、同時トランザクションの処理の影響に偏っています.
定義:トランザクション内部の操作は、他のトランザクションとは独立しており、同時に実行される各トランザクション間で干渉しません.
厳格な隔離性:Serializable(シリアル化可能)、効率が低い.
詳細は1.3を参照
持続性:Durability
定義:トランザクションがコミットされると、データベースの更新は永続的です.
実装:redo log
: ,
:
: , ,
: , redo log 。 redo log, , MySQL
説明:redo logとbinlogの違い.
redo log binlog, , :
1.
redo log crash recovery,
binlog point-in-time recovery, ,
2.
redo log InnoDB ,binlog
3.
redo log ,binlog
4.
redo log ,
binlog
1.3データベース・トランザクションの実装方法
原子間および永続性:ログ
トランザクションの原子間性と持続性は、トランザクション・ログ、すなわちロールバック・ログ(undo.log)とREDOログ(redo.log)によって決まります.
ぶんりせい
独立性レベルと同時トランザクションによる問題
独立性レベル
汚読
繰り返し不可
まぼろし読み
Read Uncommittedをコミットしていません
√
√
√
Read Committedをコミットしました
√
√
リピート可能Repeatable Read
√
シリアル化可能Serializable
実現メカニズム
1.4データベースの分散トランザクションソリューション:2 PC
[改善を待つ]
2.Springトランザクション
2.1インタフェース
// 、 ( 、 、 、 、 )、
PlatformTransactionManager
TransactionDefinition
TransactionStatus
2.2独立性レベル:1.3参照
2.3伝播行為
シーン:トランザクションメソッドが別のトランザクションメソッドに呼び出されたとき、トランザクションはどのように伝播しますか?7つの伝播動作:暫定
を選択します.
説明
2.4取引定義情報:タイムアウト、読取り専用、ロールバック
≪タイムアウト|Timeout|emdw≫:1つの事務所で実行できる最大時間読取り専用:読取り専用または読取りと書込みの2つのタイプ.読取り専用に設定し、トランザクションのパフォーマンスが向上するロールバック・ルール:トランザクションのロールバックにどのような例外が発生するかを定義します.
2.5 code
[改善を待つ]
3.分散トランザクション
3.1定義
分散トランザクションとは、トランザクションの参加者、トランザクションをサポートするサーバ、リソースサーバ、トランザクションマネージャがそれぞれ異なる分散システムの異なるノードの上にあることを意味します.簡単に言えば、大きな操作は異なる小さな操作から構成され、これらの小さな操作は異なるサーバに分布し、異なるアプリケーションに属しています.分散トランザクションは、これらの小さな操作がすべて成功するか、すべて失敗するかを保証する必要があります.本質的には、分散トランザクションは、異なるデータベースのデータ整合性を保証するためです.
3.2発生原因
1つのアプリケーションが複数のマイクロサービスからなる1つのアプリケーションのデータベースは、1つのマイクロサービス1つのライブラリなどの複数のデータベースから構成されます.
3.3基礎
CAP
C強い一致性;A可用性;Pパーティションフォールトトレランス応用:CPまたはAP
BASE:APベースの拡張
BA基本利用可能:分布式システムに故障が発生し、一部の利用可能機能を損失することを許可し、核心機能がSソフト状態を保証する:システム中に中間状態が存在することを許可し、システムの利用可能性に影響しない、不一致Eの最終的な一致性を指す:しばらくの時間を経て、すべてのノードデータが一致に達するまで
3.4分散方式
2 PC:強い一致性
3PC:
TCC:最終的な一貫性
ローカル・メッセージ・テーブル:最終的な一貫性
MQトランザクション:最終コンシステンシ
Sagaトランザクション:最終的な一貫性
リファレンス
[MySQLトランザクションを深く学ぶ:ACID特性の実現原理
『浅入深出』MySQLでの事務の実現
データベーストランザクションのまとめと整理(一)
もう一人は君に分布式の事務を聞いて,これを彼に投げた.
InnoDBトランザクションの実装原理について
データベース・トランザクションの原子間性、一貫性はどのように実現されますか?