2014-03-01から1ヶ月間の記事一覧

トランザクションで遊んでみた

何かデッドロックの一件でトランザクション分離レベルの変更を行ったけれど、イマイチこの分離レベルの詳細が分からないので、実験してみた。誰ですか、暇人だなんて言う人は。======================================================= 【実験環境】 ・Wind…

仮説仮説検証

てことで、昨日思い浮かんだ仮説を本来の業務中に時間サをとボって検証してみた。【検証方法】 昨日の2つのVBSの中で、トランザクション分離レベルをSerializableにして、同時に起動してみた。【結果】 現象再現した!\(^▽^)/いや〜、SQLServerのエラー…

仮説検証

トラブルは出なくなったものの、何かやっぱり納得いかんので、同じ環境を作って実験してみた。 【検証方法】 DBの構成を実際のものに合わせる。 UPDATE→SELECTを1トランザクション内で行いそれを1万回繰り返すVBSを2つ作り、同時に起動する。 【結果】 うん…

鍵の新たな死因……?

とりあえずこれまでの経緯をまとめると UPDATE文+SELECT文、もしくはUPDATE文+UPDATE文の組み合わせでデッドロックが発生した 更新ロックと共有ロックに共通する範囲があり、かつ同時に行われると発生する、変換デッドロックという現象だろうということが…

鍵は二度死ぬ

ということで、デッドロックトラブルの続き。前回のSELECTとUPDATEがかち合う理屈はわかった。UPDATE文は対象が1レコードだけだが、SELECT文はテーブル内のそれなりに広範囲のレコードが対象になるので、ロックがかち合う可能性はあるだろ〜な〜とも思う。で…

鍵は死んだ

デンっ!うん、日本語でおk ロック個のリソースって何よそれはともかく、どうやらついに出くわしてしまったようだ。デッドロック。デッドロックねぇ……デッドロックって何だっけ。ポン酢醤油のある家だっけ。 アレだよね、Aテーブル→Bテーブルの順で更新する…