タグ

transactionに関するinoueyuworksのブックマーク (2)

  • いろんなAnomaly - Qiita

    昨日様々なトランザクション分離レベルに付いて書いた。 AnomalyとはSerializableでない実行を引き起こす異常状態パターンのことを言う。 弱い分離レベルほどAnomalyが起きやすい。 これから図を交えながらAnomalyについて説明する。 図中の「W(x)」は「xに何らかの値を書き込む」、「R(x)」は「xの値を読む」をそれぞれ意味する。 分かりやすいようにReadは青、Writeは赤色で統一する。 また、Anomalyの被害に遭うのは常にT1に統一する。 Cはコミットを意味する。 Dirty Read Anomaly 未コミットな値を読んでしまうAnomalyの事。Readがロック関係なしに値を読んでしまう場合などに起きる。 T1が書き換えられる最中のxの値を読んでしまっている。もしT2が途中でアボートしたらT1はどこにも存在しない値を読んだ事になってしまう。 READ U

    いろんなAnomaly - Qiita
    inoueyuworks
    inoueyuworks 2021/06/09
    dirty read; read skew; lost update; inconcistent read; write skew; read skew; についての解説
  • ネストしたトランザクション内で ActiveRecord::Rollback を raise しても握りつぶされるだけだ | TECHSCORE BLOG | TECHSCORE BLOG

    こんにちは、三苫です。 ActiveRecordのトランザクションについてちょっとしたtipsです。 以下のActiveRecordを使ったrubyコードがどのようなクエリを発行するだろう? Entity.transaction do Entity.transaction do Entity.create!(name: "hoge") end Entity.transaction do Entity.create!(name: "moge") raise ActiveRecord::Rollback end end

    inoueyuworks
    inoueyuworks 2017/12/19
    rails における nested transaction についての挙動を説明。デフォルトではしれっと親 transaction に合流するので注意が必要。 ActiveRecord::Rollback は直近 transaction に rollback 処理がある場合にのみ効果がある。
  • 1