シーケンスオブジェクトのブロック
Aug 19 2020
多くと呼ばれるシーケンスオブジェクトで問題が発生しています。これは、レコードがテーブルに挿入される前に値を割り当てるために使用されます。
今日、700以上のセッション(すべてシーケンスオブジェクトから次の値を取得しようとしている)が、待機タイプPAGELATCH_EXでシーケンスオブジェクトから次の値を取得しようとしているセッションによってブロックされていることがわかりました。他の700以上のセッションはLATCH_EXで待機していました。
待機リソースを調べたところ、sys.sysobjvaluesを参照していました。
なぜこれが起こっているのか、そして他の人がこれを見たのかどうか、私は興味があります。最近、このシーケンスのCACHE値をDEFAULT(50)から200に変更しました。これにより、シーケンスを頻繁に使用するため、シーケンスの呼び出しのパフォーマンスが向上すると思いましたが、間違っていた可能性があります。
SQL Server 2012SP4を使用しています。
回答
LowlyDBA-JohnMcCall Aug 28 2020 at 20:58
他の700以上のセッションはLATCH_EXで待機していました...最近、このシーケンスのCACHE値をDEFAULT(50)から200に変更しました。
700の待機セッションがある場合、私の最初の考えは、ワークロードを考えると、キャッシュをはるかに高くする必要があるということです。待機が安定するか低下するまで、500〜1000の範囲で(そしておそらく増加し続ける)何かを試すことをお勧めします。より大きなキャッシュ値で見つけることができるスイートスポットがあるはずです。