カジュアルにギャップキーロック
               とネクストキーロック

                 @kitakoh 2012




12年10月19日金曜日
自己紹介

               • @kitakoh(放置中…)
               • 大分から来ました
               • パン食べるパン
               • よろしくお願いします!

12年10月19日金曜日
まずはギャップロックについて


               •   ギャップ = 指定範囲

               •   指定範囲の、レコードとレコードの間
                   の、まだ何も無い空間にもロックをかけ
                   る




12年10月19日金曜日
デモ

               •   先行するトランザクションAが、id
                   BETWEEN 1 AND 10 のロックを取得

               •   後追いのトランザクションBが、まだ無い
                   id=4のレコードをINSERT出来ない




12年10月19日金曜日
要は、

               •   行そのものにではなく、「範囲に対して
                   ロック」している

               •   これによりファントムの発生を防ぎ、
                   同一TRX内での結果の一貫性が保たれる

               •   分離レベルがRR未満の場合は発生しない



12年10月19日金曜日
ネクストキーロックとは



               •   指定範囲のロックを取得した時に、実際
                   のロックが指定範囲の次のレコードにま
                   で及ぶ事




12年10月19日金曜日
デモ

               •   先行するトランザクションAが、id < 8の
                   ロックを取得

               •   後追いのトランザクションBが、id = 8の
                   レコードをUPDATE出来ない




12年10月19日金曜日
いろいろ試した結果、



               •   なぜか、不等号の向きが逆の場合、つま
                   りひとつ前のレコードには影響しない




12年10月19日金曜日
まとめ

               • 想定外の待ちが発生した時は、これら
                の事を思い出してみると解決するかも
                です!



               • ご清聴ありがとうございました!!

12年10月19日金曜日

カジュアルにギャップキーロックとネクストキーロック

  • 1.
    カジュアルにギャップキーロック とネクストキーロック @kitakoh 2012 12年10月19日金曜日
  • 2.
    自己紹介 • @kitakoh(放置中…) • 大分から来ました • パン食べるパン • よろしくお願いします! 12年10月19日金曜日
  • 3.
    まずはギャップロックについて • ギャップ = 指定範囲 • 指定範囲の、レコードとレコードの間 の、まだ何も無い空間にもロックをかけ る 12年10月19日金曜日
  • 4.
    デモ • 先行するトランザクションAが、id BETWEEN 1 AND 10 のロックを取得 • 後追いのトランザクションBが、まだ無い id=4のレコードをINSERT出来ない 12年10月19日金曜日
  • 5.
    要は、 • 行そのものにではなく、「範囲に対して ロック」している • これによりファントムの発生を防ぎ、 同一TRX内での結果の一貫性が保たれる • 分離レベルがRR未満の場合は発生しない 12年10月19日金曜日
  • 6.
    ネクストキーロックとは • 指定範囲のロックを取得した時に、実際 のロックが指定範囲の次のレコードにま で及ぶ事 12年10月19日金曜日
  • 7.
    デモ • 先行するトランザクションAが、id < 8の ロックを取得 • 後追いのトランザクションBが、id = 8の レコードをUPDATE出来ない 12年10月19日金曜日
  • 8.
    いろいろ試した結果、 • なぜか、不等号の向きが逆の場合、つま りひとつ前のレコードには影響しない 12年10月19日金曜日
  • 9.
    まとめ • 想定外の待ちが発生した時は、これら の事を思い出してみると解決するかも です! • ご清聴ありがとうございました!! 12年10月19日金曜日