Sql-Server

序列對象阻塞

  • August 28, 2020

我們一直在遇到一個我們擁有的被稱為很多的序列對象的問題。它用於在將記錄插入表之前分配一個值。

今天我看到 700 多個會話(都試圖從序列對像中獲取下一個值)被一個試圖從具有 PAGELATCH_EX 等待類型的序列對像中獲取下一個值的會話阻塞。其他 700 多個會話正在等待 LATCH_EX。

當我查看等待資源時,它指的是 sys.sysobjvalues。

我很好奇為什麼會發生這種情況,以及其他人是否看到了這一點。我們最近將此序列的 CACHE 值從 DEFAULT (50) 更改為 200。鑑於我們如此頻繁地使用它,我認為這將提高呼叫序列的性能,但可能我錯了。

我們使用的是 SQL Server 2012 SP4。

其他 700 多個會話正在等待 LATCH_EX….我們最近將此序列的 CACHE 值從 DEFAULT (50) 更改為 200。

如果您有 700 個等待會話,我的第一個想法是考慮到工作負載,記憶體需要更高。我建議嘗試 500-1000 範圍內的東西(並且可能會繼續增加),直到您看到等待穩定或下降。應該有一個您可以找到具有較大記憶體值的最佳位置。

引用自:https://dba.stackexchange.com/questions/273963