水文:事務(未完)

5010 ワード

取引


文書ディレクトリ

  • トランザクション
  • 1. トランザクション/データベーストランザクション
  • 1.1定義
  • 1.2特性:ACID
  • Prepare:MySQLログ
  • 原子性:Atomicity
  • 整合性:Consistency
  • 隔離性:Isolation
  • 持続性:Durability
  • データベース・トランザクション
  • の実装方法
  • 原子間および永続性:ログ
  • 隔離性
  • 独立性レベルと同時トランザクションによる問題
  • 実現メカニズム
  • 1.4データベースの分散トランザクションソリューション:2 PC
  • 2. Springトランザクション
  • 2.1インタフェース
  • 2.2独立性レベル:1.3
  • を参照
  • 2.3伝播挙動
  • 2.4トランザクション定義情報:タイムアウト、読取り専用、ロールバック
  • 2.5 code
  • 3. 分散トランザクション
  • 3.1定義
  • 3.2発生原因
  • 3.3基礎
  • CAP
  • BASE:APベースの拡張
  • 3.4分散スキーム
  • 2 PC:強い一致性
  • 3PC:
  • TCC:最終一致
  • ローカル・メッセージ・テーブル:最終コンシステンシ
  • MQトランザクション:最終コンシステンシ
  • Sagaトランザクション:最終コンシステンシ
  • 参照
  • 1.取引/データベース取引


    1.1定義


    トランザクション.アクティビティに関連するすべての操作を分割できない実行ユニットに組み入れるメカニズムを提供します.この実行ユニットのすべての操作がすべて成功してから実行トランザクションが計算されます.そうしないと、トランザクション全体がロールバックされます.
    要するに、トランザクションは「すべて成功するか、すべて失敗するか」というメカニズムを提供します.
    説明:トランザクションはストレージエンジンで実装されます.トランザクションをサポートするストレージエンジンには、InnoDB、NDB Clusterなどがよくありますが、サポートされていないのはMyISAMとMemoryです

    1.2特性:ACID


    ACIDとは、データベースが正しく実行する4つの基本的な特性の略です.
  • 原子性、Atomicity
  • 整合性、Consistency
  • 隔離性、Isolation
  • 持続性、Durability
  • 厳格な基準に従い、同時にACIDの特性を満たすことがトランザクションです.しかし、大手データベース・ベンダーの実装では、MySQLのNDB Clusterトランザクションが独立性と持続性を満たしていない、InnoDBトランザクションが独立性を満たしていない(デフォルトのトランザクション独立性レベルは繰り返し読み取り可能)、Oracleトランザクションが独立性を満たしていない(デフォルトのトランザクション独立性レベルは読み取りコミット済み).

    Prepare:MySQLログ


    バイナリ・ログ、エラー・ログ、クエリー・ログ、遅いクエリー・ログなど、ログ・タイプはさまざまです.
    InnoDBには、redo log(REDOログ)とundo log(ロールバックログ)の2つのトランザクション・ログがあります.
  • redo logトランザクションの持続性を保証するための
  • undo log、トランザクションの原子性と隔離性を保証するための
  • 原子性: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)によって決まります.
  • ロールバックログ、エラーまたはロールバック操作が発生し、undoを逆実行する.log,保証原子性
  • はログをやり直し、トランザクションがコミットされたがディスクに書き込まれなかった場合にダウンタイムし、次回の再起動でredoが再実行されます.log、持続性保証
  • ぶんりせい


    独立性レベルと同時トランザクションによる問題
    独立性レベル
    汚読
    繰り返し不可
    まぼろし読み
    Read Uncommittedをコミットしていません



    Read Committedをコミットしました


    リピート可能Repeatable Read

    シリアル化可能Serializable
    実現メカニズム
  • ロック:読み書きロック、または共有ロック
  • タイムスタンプ:CAS
  • マルチバージョンとスナップショットの分離、すなわちMVCC:ログベース
  • 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トランザクションの実装原理について
    データベース・トランザクションの原子間性、一貫性はどのように実現されますか?