(Republishing, or using this info in a commercial product/website, is prohibited without permission. All other uses are permitted. If in doubt, please ask.)
This latch is when a thread is waiting to create the free space cache for a heap IN_ROW_DATA allocation unit, or any ROW_OVERFLOW_DATA or LOB_DATA allocation unit. When inserting into a heap or a LOB structure, the insertion point is determined by where there is enough free space (as there is no forced insertion point, like there is with a new index record), based on the approximate PFS free space tracking bits for the page. Rather than having to search through PFS pages for every insert, there is a small in-memory cache of PFS free-space values for pages that is scanned before an insertion. If a page with enough free space is not found, a new page is allocated. See here for more information on the PFS bits for a page.
(Books Online description: N/A)
Questions/comments on this latch class? Click here to send Paul an email, especially if you have any information to add to this topic.
Added in SQL Server version:
Removed in SQL Server version:
Extended Events latch_class value:
Maps to the SPACEMGR_CREATE_FSC map_value in sys.dm_xe_map_values.
The map_key value in sys.dm_xe_map_values is 81 in 2012 and 2014 RTM. After 2014 RTM, you must check the DMV to get the latest value as some map_key values have changed in later builds.
I have not seen this latch be a noticeable contention point.
Known occurrences in SQL Server (list number matches call stack list):
- Creating the free space cache for a LOB_DATA allocation unit (in this case, when inserting a new LOB value and finding that the free space cache doesn’t already exist)
And other similar call stacks.
Abbreviated call stacks (list number matches known occurrences list):