四つのトランザクション分離レベル

データベースの分離レベルの操作

  • :分離レベルを設定するSET TX_ISOLATION = 'READ-UNCOMMITTED'
  • ビューの分離レベル:SELECT @@ TX_ISOLATION

、READ UNCOMMITTED - コミットされていないコンテンツを読みます

  • トランザクションがコミットされていないコンテンツを表示することができます
  • 問題は、多くの場合、ダーティ・リード(ダーティリード:他のコミットされていないトランザクション(実行)の内容を読み取るために)を生成
    同じデータテーブルA、B 2つのトランザクション(A、Bのクロス取引)スタートの取引で開かれた
    トランザクションのみをデータテーブルの内容を照会、取引を行うが、操作は、(提出)コミットしないようにBの追加および削除
    トランザクションへのクエリはまだ(コミットされていないコンテンツにクエリ-ダーティ・リード)テーブル内のデータを変更することができます

二、コミット読む - 提出を読みます

  • トランザクションは、あなたが提出したコンテンツを見ることができます
  • :問題は、多くの場合、非反復可能読み取り(select文を同じ異なる結果に同じトランザクションを実行するために非反復読み込み)を生成
    同じデータテーブルA、B 2つのトランザクション(A、Bのクロス取引)スタートの取引開くための
    唯一のトランザクションデータの照会をテーブルの内容取引を行うために、Bの追加および削除ではなく、操作が(提出)コミット
    トランザクションがデータ変更クエリのテーブルよりも小さい
    Bのトランザクションがコミット
    データの変更(2、異なる結果で見つかったクエリ-ノーを反復可能読み取り)

三、反復可能読み取りは - 再読み込みすることができます

  • 同じデータが同じトランザクションの複数の同時インスタンスを読んでいるときの結果が得られ
  • MySQLのデフォルトのトランザクション分離レベル
  • :(複数の異なる結果を(仮想線)読み取りファントム読み取りを)問題は、多くの場合、ファントムが読ん生成
    同じデータテーブルA、B 2つのトランザクション(A、Bのクロス取引)スタートの取引上のオープン
    のみのデータテーブルの内容を照会トランザクションを、Bの追加および削除トランザクションを行うが、動作(送信)コミットしない
    トランザクションがデータ変更照会テーブル未満の
    Bトランザクションがコミット
    クエリデータトランザクションは、テーブルの内容を変更できない
    ように、Aの
    テーブルのデータを照会することができます変更

四、シリアライズ - シリアライズ

  • 分離の最高レベル
  • プラス取引の共有ロックは、1つのトランザクションのみを操作しながら、ファントム読み取りの問題を解決するために
  • タイムアウトの多くにつながるとロック競合の問題はウィル
    トランザクションを開くと、
    開いているトランザクションBの操作を追加または削除することはできません

おすすめ

転載: www.cnblogs.com/QX-Tang/p/11516567.html