キムラデービーブログ

オープンソースデータベースを加速する「キムラデービー」のブログです。カレー日記を兼ねてます。なお著者は2010-06-01より日本オラクルに在籍していますが、本サイト(ブログ、またはウェブサイト)において示されている見解は、私自身の見解であって、オラクルの見解を必ずしも反映したものではありません。
<< [便乗企画] 「SQL大量発行処理をいかにして高速化するか」for MySQL | main | データベース都市伝説「DB2は単一トランザクション内に、複数のセーブポイントを定義することができません」 >>
データベースの分離レベルをめぐる冒険(I.イントロダクションとII.MySQLの場合)
0
    とある原稿を書いていて、トランザクションまわりをチト調べている私です。

    あまり深みに入らなければ、4つのトランザクション分離レベルと、それぞれのアノーマリを説明して、はい、終わり、ということにしたいのですが、私には以前気づいてしまった以下の記事があり「あれ、四つ多くない?」を細かく調べることなく放置していたのでした。

    Web開発者が知っておくべき八つの分離レベル

    しかし、ここで調べなければもやもやは晴れないですし、
    神林さんがシリアライズでもパフォーマンスに問題のないRDBMSの実装が終わり、
    世の中でがんがん使われるようになるまでは、いましばらくかかるため、手元の道具(RDBMS)が
    どのようにデータベースの分離レベルを実装しているか知って使ったほうがいいだろう、ということで
    ここでしばらく時間をとって、整理したり、まとめたりします。

    I.イントロダクション

    日本語翻訳の原文はこちら。

    Eight Isolation Levels Every Web Developer Should Know

    要は「八つのトランザクション分離レベルがあるので、知っとけ」ということなのですが。。。。

    1.Read Uncommitted
    2.Read Committed
    3.Monotonic View
    4.Snapshot Reads
    5.Cursor Stability
    6.Repeatable Read
    7.Snapshot Isolation
    8.Serializability

    なんか見慣れぬものがごろごろと。。。。実は2.から5.はRC(Read Committed)と、その拡張です。

    Overwritesを禁止(SELECT ... FOR UPDATE)ということで、少なくともOracleとMySQL, Firebirdの
    Read Committedは、ここでいう6.Cursor Stabilityの実装のようです。

    うーん、なんかこう定義みたいなものはないのかなぁ、ということで見つけたドキュメントが以下。

    Weak Consistency: A Generalized Theory and OptimisticImplementations for Distributed Transactions by Atul Adya

    これを順に読んでいけばなんとかなるかなぁ。

    II.MySQLの場合

    ちなみにMySQLでは、以下の5つとなります。

    ----------------------+-----------------------
    この記事での分離レベル MySQLでの分離レベル
    ----------------------+-----------------------
    1.Read Uncommitted   READ UNCOMMITTED
    5.Cursor Stability     READ COMMITTED
    6.Repeatable Read    REPEATABLE READ
    7.Snapshot Isolation   REPEATABLE READ WITH CONSISTENT SNAPSHOT
    8.Serializability      SERIALIZABLE
    ----------------------+-----------------------

    「あれ、四つじゃないの?」と思った人は鋭い! (いや、別の意味では鋭くない)
    実はmysqldumpにて、InnoDB型のテーブル、すなわちトランザクションが利用できる環境で、
    一貫性をもったバックアップを取得するため(--single-transaction)に用意されているものです。

    この分離レベルでSTART TRANSACTIONした場合は、RRのように、一度オープンしたテーブルの内容を
    繰り返し取得できるのではなく、START TRANSACTIONした際のテーブルの内容を
    その後のトランザクション内で参照できる、というバックアップに適した(==そのために)
    実装されている分離レベルとなります。

    13.3.1 START TRANSACTION、COMMIT、および ROLLBACK 構文


    (次回以降に続く(予定))

    JUGEMテーマ:コンピュータ

    | meijik | MySQL | 09:40 | comments(0) | trackbacks(0) | - | - |









    http://blog.kimuradb.com/trackback/877571
    1234567
    891011121314
    15161718192021
    22232425262728
    2930     
    << September 2019 >>
    + RECOMMEND
    100人のプロが選んだソフトウェア開発の名著 君のために選んだ1冊
    100人のプロが選んだソフトウェア開発の名著 君のために選んだ1冊 (JUGEMレビュー »)

    100人のうちの一人としてミックさんの本を推薦しています。
    + RECOMMEND
    MySQL 5.1 Plugin Development
    MySQL 5.1 Plugin Development (JUGEMレビュー »)
    Andrew Hutchings,Sergei Golubchik
    MySQL 5.1 のプラグインを作るならこれ!
    + RECOMMEND
    AWKを256倍使うための本 (Ascii 256倍)
    AWKを256倍使うための本 (Ascii 256倍) (JUGEMレビュー »)
    志村 拓,鷲北 賢,西村 克信
    ここにきてまさかの復刊。15〜16年前の本ですが、いまでも十分役立ちますよ!!
    + RECOMMEND
    Linux-DB システム構築/運用入門 (DB Magazine SELECTION)
    Linux-DB システム構築/運用入門 (DB Magazine SELECTION) (JUGEMレビュー »)
    松信 嘉範
    Linux-DB システム構築の新スタンダード。DB Magazine人気連載、待望の書籍化です!!
    + RECOMMEND
    + RECOMMEND
    超・極める!MySQL
    超・極める!MySQL (JUGEMレビュー »)
    坂井 恵,志村 和彦,ひろせ まさあき,松信 嘉範
    内容は少々古くなりましたが、内部説明があり、いろいろ面白いです。
    + RECOMMEND
    The Root of .NET Framework
    The Root of .NET Framework (JUGEMレビュー »)
    荒井 省三
    .NETの根っこをつかむ、か?
    + RECOMMEND
    エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド
    エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド (JUGEMレビュー »)
    奥野 幹也
    これまでにない構築、そして構築後のMySQLのための本。
    + RECOMMEND
    Database Management Systems
    Database Management Systems (JUGEMレビュー »)
    Raghu Ramakrishnan,Johannes Gehrke
    ミックさん連載の参考書籍です。
    + RECOMMEND
    Advanced Programming in the UNIX Environment: Paperback Edition (2nd Edition) (Addison-Wesley Professional Computing Series)
    Advanced Programming in the UNIX Environment: Paperback Edition (2nd Edition) (Addison-Wesley Professional Computing Series) (JUGEMレビュー »)
    W. Richard Stevens,Stephen A. Rago
    必読! といいつつ私が読んだのは初版の日本語訳です。差分はチェックしないといけませんね。
    + RECOMMEND
    + RECOMMEND
    + RECOMMEND
    Western Digital Scorpio Blue 2.5inch 5400rpm 320GB 8MB PATA WD3200BEVE
    Western Digital Scorpio Blue 2.5inch 5400rpm 320GB 8MB PATA WD3200BEVE (JUGEMレビュー »)

    DELL SX260の換装用に購入。今はコチラのほうが安いですね。
    + RECOMMEND
    情熱プログラマー ソフトウェア開発者の幸せな生き方
    情熱プログラマー ソフトウェア開発者の幸せな生き方 (JUGEMレビュー »)
    Chad Fowler
    OSC2010神戸に出展されたジュンク堂で買いました。
    + RECOMMEND
    Software Design 総集編 【2000~2009】(DVD付)
    Software Design 総集編 【2000~2009】(DVD付) (JUGEMレビュー »)

    メガトン級の過去記事。売り切れる前にお店に急げ!
    + RECOMMEND
    + RECOMMEND
    玄人志向 2.5型HDDケース SATA対応USB2.0接続 GW2.5AI-SU2
    玄人志向 2.5型HDDケース SATA対応USB2.0接続 GW2.5AI-SU2 (JUGEMレビュー »)

    Aspire 1410 HDD換装後、昔のHDDはこれにいれます。
    + RECOMMEND
    + RECOMMEND
    acer Aspire Timeline AS1410 11.6型ノートPC Windows7搭載 250GB ブラック AS1410-KK22
    acer Aspire Timeline AS1410 11.6型ノートPC Windows7搭載 250GB ブラック AS1410-KK22 (JUGEMレビュー »)

    色違い黒(他に青と白があります): メモリは最大4GBとあるが、がんばれば8GBいけるらしい。
    + RECOMMEND
    Firebird 徹底入門
    Firebird 徹底入門 (JUGEMレビュー »)
    木村 明治,はやし つとむ,坂井 恵
    Firebird日本ユーザ会のはやしさん、そしてMyNAから拝借(?) してきた坂井さんとともに書きました。まだ誰も知らないFirebird 2.5や、いままでドキュメントのなかったツール類についてもソースを確認してとりあげた本です。是非ご活用ください。
    + SELECTED ENTRIES
    + RECENT COMMENTS
    • [ミュージシャンに聴かせたい・弾かせたい!] (4) 山田元気様
      meijik (07/27)
    • 毎月日経SYSTEMSが届くたびに?が増え続ける: 日経SYSTEMSのコラム「ITアーキテクチャーの真髄」と「第7正規化」
      meijik (03/03)
    • 2019年の木村明治
      田中尚 (01/08)
    • 使い慣れたSQLに潜む実装依存: Firebirdの場合(6) 文字列との結合演算子
      noname (12/10)
    • 毎月日経SYSTEMSが届くたびに?が増え続ける: 日経SYSTEMSのコラム「ITアーキテクチャーの真髄」と「第7正規化」
      Moriaki_ (01/05)
    • 毎月日経SYSTEMSが届くたびに?が増え続ける: 日経SYSTEMSのコラム「ITアーキテクチャーの真髄」と「第7正規化」
      Moriaki_ (01/05)
    • 2015年版 InterBaseの歩み
      nakagami (12/06)
    • 毎月日経SYSTEMSが届くたびに?が増え続ける: 日経SYSTEMSのコラム「ITアーキテクチャーの真髄」と「第7正規化」
      meijik (11/22)
    • 分散DB本読書会第46回メモ「STOP AFTER 10」
      masudahidehiko (09/01)
    • Windows上でのMySQLビルド方法
      kinoyasu (03/31)
    + RECENT TRACKBACK
    + CATEGORIES
    + ARCHIVES
    + MOBILE
    qrcode
    + LINKS
    + PROFILE