タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

トランザクションに関するuzuki05のブックマーク (2)

  • InnoDBのREPEATABLE READにおけるLocking Readについての注意点

    日は、MySQL Casual Advent Calendar 2013の20日目である。というわけでカジュアルに小ネタを紹介しよう。 MVCC - Multi Version Concurrency Controlご存知の通り、InnoDBはMVCCを実装している。そのため、分離レベルがREPEATABLE READの場合には、行にロックをかけることなく、一貫した読み取りが可能になっている。 もし、あるトランザクションT1開始後に、別のトランザクションT2によって同じ行が書き換えられてしまった場合には、T1はロールバックセグメントにある古いバージョンの値を読み取ることができるので、T1内で実行したSELECTは常にT1開始時点のデータを参照することができるのである。大事なのでもう一度言うが、REPEATABLE READにおける単純なSELECTでは行ロックは必要ない。 Lost Up

    InnoDBのREPEATABLE READにおけるLocking Readについての注意点
    uzuki05
    uzuki05 2019/09/05
    Locking Read ではファントムが発生する
  • MySQLのデフォルトトランザクション分離レベルはREPEATABLE READだけど… - Qiita

    こちらのエントリを見て思い出しました。 アプリケーションエンジニアが知っておくべきMySQLのロック MySQL(InnoDB)のデフォルトトランザクション分離レベルは表題の通りREPEATABLE READですが、その場合でも、UPDATEとDELETEはREAD COMMITTED相当の動作になります。 実験 以下のようなアプリケーションがあったとします。 入会申請の都度、テーブルにレコードがINSERTされる。 受付処理を行うときに、当該レコードをUPDATEして処理済みにする。 ※説明を簡単にするために、入会申請(entry)テーブルには、通し番号(entry_no)・名前(name)・処理フラグ(proc_flag)の3つのカラムしか持たないものとします。 処理前に、こんな感じでレコードが入っているとします。 mysql> SELECT * FROM iso_level_test

    MySQLのデフォルトトランザクション分離レベルはREPEATABLE READだけど… - Qiita
  • 1