Spring Frame eworkの事務管理

4689 ワード

目次
  • 問題
  • データベース事務
  • 事務の定義
  • 事務の目的
  • 事務の特性
  • 事務分離レベル
  • データ合併問題
  • 事務分離レベルのデータ合併問題に対する役割
  • スナップショットを読む
  • Spring事務管理
  • 事務管理インターフェース
  • Transation Definition
  • 事務タイムアウト
  • 読み取り専用状態
  • ロールバック規則
  • Transation Storts
  • Platform Transation Manager
  • を参照してください.
    問題
    1、事務は何ですか?
    2、事務の目的は何ですか?
    データベース事務
    Springの事務管理の下層はデータベース事務に基づいていますので、Spring事務を学ぶ前に、まずデータベース事務を勉強しなければなりません.
    事務の定義
    トランザクションはデータベース管理システムの実行中の論理単位であり、限られたデータベース操作シーケンスから構成される.(ウィキペディアから)
    簡単な翻訳とは、データリソースをアクセスする段階的な操作を一つの全体的な操作に組み合わせることです.
    事務の目的
    事務の目的はデータの整合性を保証することです.
    事務の特性
    段階的な操作を一つの全体的な操作に組み合わせると、全体的な成功や失敗(共生共死)が発生します.厳密な定義が必要です.
    事務の4つの特性(ACID):原子性(Atomicity)、整合性(Consstency)、分離性(Isolation)、持久性(Durability).
  • 原子性:同じトランザクションの複数の動作は、分割できない最小ユニットである.すべての操作が成功したら、トランザクションを提出します.そうでなければ、すべての操作をキャンセルして、データベースを初期状態に戻します.
  • は、トランザクションを提出した後、データの結果と業務予期規則が一致しています.例えばAからBへの振替は、事務の提出が成功したかどうかにかかわらず、両口座の総額は変わらない.
  • 分離性:同時操作時の事務と事務の間に隔離があり、互いに干渉しない.隔離性はデータベースの隔離レベルに依存する.
  • 持久性:トランザクション提出が成功すると、トランザクションの一連の動作がデータベースに永続化されます.
  • 事務隔離レベル
  • 提出されていないものを読んでください.一つのトランザクションは他の未提出のものを読み取ることができます.「汚い読み」「重複して読んではいけない」「幻読み」があるかもしれません.
  • 提出を読みます.一つのトランザクションはもう一つのデータが提出されました.「缲り返して読んではいけない」「幻読み」が出てくるかもしれません.ほとんどのデータベースのデフォルト分離レベル
  • は、繰り返して読むことができます.全体のトランザクションの間に、同じデータの読み取り結果が複数あります.「幻読み」が出てくるかもしれません.Mysqlデフォルトレベル.
  • はシリアル化されています.すべてのトランザクションは順次実行しなければなりません.最も厳しい隔離レベル.
  • データ合併問題
  • 汚い読み:事務1はデータを更新したが、提出しなかったが、事務2は未提出の内容を読み取ることができる.トランザクションが更新されていないデータをロールバックした場合、トランザクション2の前に読み込まれます.
  • は繰り返して読んではいけません.同じトランザクションは同じデータを何度も読みます.読み取りの結果は毎回違っています.事務1は、事務2の更新操作前と後でそれぞれ1回のデータを読み出すと、2つの結果が異なる場合があります.
  • 幻読み:同一のトランザクションは、同じデータセットに対して複数のクエリを行い、毎回結果セットが異なる.トランザクション1は、トランザクション2の挿入または削除操作の前後に、それぞれ1回のデータを読み出し、その操作の結果セットが異なる.
  • 汚読の原因:「select」の操作に制限はありません.
    再読不可の原因があります.「udate」操作に制限はありません.
    幻読みが発生した理由:「insert」と「delete」の操作に制限がない.
    事務隔離レベルがデータの併発問題に及ぼす役割
  • 読解未提出の役割:無作用.
  • 読み提出:「速く読みます」を使うと「汚い読み」は避けられますが、「繰り返して読んではいけません」「幻読み」は避けられません.
  • は、繰り返し読むことができます.「速く読む」を使うと、「汚い読み」「繰り返してはいけない」が避けられますが、「幻読み」は避けられません.
  • シリアル化:「汚い読み」「繰り返してはいけない」「幻読み」を避けることができます.
  • 速く読んでください
    速く読んでMVCCとundo logsに基づいて実現して、簡単なselect語句に適用します.MVCCのバージョン制御は、ReadView(事務ビュー)によって実現される.
    読んで提出しました.トランザクションの各SQLはReadViewを生成します.クエリー操作を行うときは最新のReadViewの値を読みます.
    繰り返して読むことができます.トランザクションの開始時にReadViewが生成されます.トランザクションの複数のSQLは同じReadViewに読み込まれます.複数のSQLクエリでも同じReadViewの値を読み出す.
    Spring事務管理
    Springは事務管理に統一的なプログラミングテンプレートを提供し、高いレベルで統一的な事務抽象を構築する.
    事務管理インターフェース
    Transation Definition
    事務の隔離レベル、タイムアウト時間、読取事務の有無、及び事務の伝達規則などの制御事務の具体的な属性を記述するために用いられる.
    事務隔離レベル
    Transaction Definitionでは、隔離レベルを表す5つの定数が定義されています.
    (1)Transation Definitions.ISO LATION_DEFAULTは、データベースを使用したデフォルトのインターフェースを表しています(Oracleは読み取りで提出します.Mysqlはデフォルトでは繰り返し読み取りが可能です.)
    (2)Transation Definitions.ISO LATION_READ_UNCOMMITTEDは、読んで提出していないことを示しています.
    (3)Transation Definitions.ISO LATION_READ_COMMITTEDは、読み提出を表します.
    (4)Transation Definitions.ISO LATION_REPEATABLE_READは、繰り返し読むことができるという意味です.
    (5)Transation Definitions.ISO LATION_SERIALIZABLEは、シリアル化を表します.
    事務伝播行為
    あるトランザクションが別のトランザクションに呼び出されると、トランザクションの伝播を指定する必要があります.
    Transaction Definitions.PROPAAGATION_REQUIREDは、現在トランザクションが存在する場合、当該トランザクションに参加する.現在は事務がない場合、新しい事務を作成します.これは最も一般的な選択です.
    Transaction Definitions.PROPAAGATION_SUPPORTSは、現在事務が存在する場合、当該事務に加入する.現在、事務がない場合は、非事務で運転を継続します.
    Transaction Definitions.PROPAAGATION_MANDATORYは、現在事務が存在する場合、当該事務に加入する.現在、事務がない場合は異常を投げます.
    トランザクションタイムアウト
    事務が許可された時間を超えて、規定時間内に事務が完了しないと自動的にロールバックします.Transation Definitionでは秒をデフォルトとします.
    読み取り専用状態
    トランザクションは、トランザクションリソースのみを読み取り、データを変更しません.トランザクションリソースデータのみを読み込み操作すると、読み取り専用状態に設定して運転性能を向上させます.
    ロールバック規則
    ロールバックとロールバックの対応異常を定義します.デフォルトでは、運転期間に特定の異常があった場合には、ロールバックします.
    Transation Storts
    事務の具体的な運行状態を表します.事務マネージャは、このインターフェースを通じて、事務運行期間の状態情報を取得することができ、また、このインターフェースを通じて間接的に事務をロールバックすることもでき、異常を投げた時よりも、事務のロールバックがより有意義である.
    Platform Transation Manager
    トランザクションマネージャは、トランザクションの提出、ロールバック、およびトランザクション定義情報に基づいて、すでに存在しているトランザクションを返すか、または新しいトランザクションを作成する.
    
    	
    		
    		
    	
    
    参照
    [1]https://zh.wikipedia.org/wiki/データベース事務
    [2]https://baijiahao.baidu.com/s?id=1611918898724887602&wfr=spider&for=pc
    [3]https://www.cnblogs.com/AlmostWasteTime/p/11466520.html
    [4]https://juejin.im/post/5b00c52ef265da0b95276091
    [5]『Spring 4.x企業応用開発の実戦に精通している』