這次遇到的問題,大概查了將近兩周才查出結果,OBJECTSTORE_LBSS這個Waittype在官網和網路上都找不到太多的資源。
遇到的問題:
突然發現有大量的Session 都在等Latch(ACCESS_METHODS_ACCESSOR_CACHE)的資源,並且造成效能低落。往Latch和 ACCESS_METHODS_ACCESSOR_CACHE查都沒有太多的方向。

檢查了一下Memory發現有異常:

嘗試Reboot SQL Server Service,會維持正常一段時間,不久後發現上圖中的Memory (Other) 會持續的上升且不會釋放。

用Script去找發現占用Memory的資源是 OBJECTSTORE_LBSS,並且會不斷成長。

找問題的途中有請教過一些高手,往Page fault 和cache hit也沒有找到異常,一般如果記憶體有物理上問題這幾兩個數值會有異常。
此外,有發現TempDB的IO似乎數值有異常,在做TempDB的調教後也沒有任何改善,因此又重新把目標定為 OBJECTSTORE_LBSS。
找到一篇文章 提到過去曾經有一個是因為 TVP 和SQL Profiler造成的BUG,如下圖,假設TVP使用到大量的Varchar(max)並同時開啟SQL Profiler,會造成這個問題。但是我目前環境的版本是SQL Server 2014 SP2,理論上應該不會遇到這個BUG。

由於,已經思無所路,所以我變嘗試將 SQL Profiler 關掉來驗證是否是一樣的問題。
-- Get the trace id
SELECT * FROM ::fn_trace_getinfo(default) WHERE property = 2;
--Stop AND Close trace
DECLARE @TraceID int
SET @TraceID = ?
EXEC sp_trace_setstatus @TraceID, 0
EXEC sp_trace_setstatus @TraceID, 2
關掉 SQL Profiler 後,問題就解了。因此應該真的是 SQL Profiler 和TVP造成的問題。於是我開始查詢微軟是否有相關的文章,後來查到這篇文章,裡面確實提到SQL Profiler和 TVP以及會出現OBJECTSTORE_LBSS的問題。可惜的是Hotfix並沒有上到SQL SERVER 2014。
[BUG] OBJECTSTORE_LBSS 有 “ 1 則迴響 ”