タグ

2018年6月6日のブックマーク (3件)

  • デッドロックのサンプルクエリ at SE の雑記

    デッドロックのテストをする際のサンプルクエリなどを。 BOL では、デッドロック を確認するとよいかと思います。 第 3 章 トランザクション分離レベルの選択とデッドロックの問題~ SQL Server 2000 における Web アプリケーション開発 ~  も参考になります。 今回は以下のデッドロックを発生させるためのサンプルクエリとなっています。 サイクルデッドロック 変換デッドロック インデックス間デッドロック テスト用のテーブルのクエリは以下になります。 CREATE TABLE [dbo].[LockTest]( [Col1] [int] NOT NULL, [Col2] [int] NULL, [Col3] [int] NULL, [Col4] [int] NULL, [Col5] [int] NULL, CONSTRAINT [PK_LockTest] PRIMARY KEY

    デッドロックのサンプルクエリ at SE の雑記
  • SQLServerのロックの中で、種類がKeyとして説明されているロック・・・シリアル化可能なトランザクションのキーの範囲を保護... - Yahoo!知恵袋

    これは確かに「わからない」日語ですね。 まず、シリアル化というのは「直列化」つまり、「何個ものSQLが連続で実行できる」と考えてください。 キー範囲というのは、実際にロック対象となる結果セットキー以外に、関係ありそうな範囲にあるキーという意味です。 これを踏まえて直すと 直列に実行できるトランザクションのキーに関係ありそうな範囲にあるキーを保護するインデックス内のロック。 となります。 これでも意味わかめですね・・・ ちょっと具体的に説明します。 たとえば、トランザクションAさんが以下のSQLを投げて、以下の結果が返ったとしましょう。 select a,b from tbl1 where a>4 5 x 6 y 8 z さて、このSQLを実行した後に、たまたまトランザクションBさんが、こんなSQLを投げていました。 insert into tbl1 values(7,a) トランザクショ

    SQLServerのロックの中で、種類がKeyとして説明されているロック・・・シリアル化可能なトランザクションのキーの範囲を保護... - Yahoo!知恵袋
  • update文の updlock

    お世話になります。 update文に with(updlock)をつけているクエリ文を、プロジェクトで見たのですが、 何のために行っているのかわかりません。 select文にwith(updlock)をかけた場合、更新ロック(共有ロック)がかかり、 異なるトランザクションでは、対象のデータに更新処理は、待機されることになります。 要するに、後で更新処理する為の予約フラグを立てるようなものと思っております。 では、Update文のオプションとしてつける意味はなんなんでしょうか。 更新するのに更新処理予約フラグを付ける必要があるのでしょうか。 しかし次のクエリでは、updlockをつけることでデッドロックが回避されることが確認できました。 トランザクション1 begin transaction update dept with(updlock) set DNAME='TEST',LOC='OS