Sdílet prostřednictvím


sys.dm_xtp_gc_queue_stats (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL databáze v Microsoft Fabric

Výstup poskytuje informace o každé frontě pracovníka sběru odpadu na serveru a různé statistiky o každé z nich. Na každý logický CPU je jedna fronta.

Hlavní vlákno sběru odpadu (Nečinné vlákno) sleduje aktualizace, smazání a vložení řádků pro všechny transakce dokončené od posledního vyvolání hlavního vlákna sběru odpadu. Když se vlákno sběru odpadu probudí, zjistí, zda se časové razítko nejstarší aktivní transakce změnilo. Pokud se nejstarší aktivní transakce změnila, pak nečinné vlákno zařadí pracovní položky (v částech po 16 řádcích) pro transakce, jejichž zápisové sady již nejsou potřeba. Například pokud smažete 1 024 řádků, nakonec uvidíte 64 pracovních položek garbage collection ve frontě, z nichž každý obsahuje 16 smazaných řádků. Po dokončení uživatelské transakce vybere všechny položky zařazené do fronty ve svém plánovači. Pokud na plánovači nejsou žádné zařazené položky, uživatelská transakce vyhledá v jakékoli frontě v aktuálním uzlu NUMA.

Můžete zjistit, zda garbage collection uvolňuje paměť pro smazané řádky, tím, že provedete sys.dm_xtp_gc_queue_stats a zjistíte, zda se zpracovává zařazená práce. Pokud se položky v current_queue_depth nezpracovávají nebo nejsou do current_queue_depth přidávány žádné nové pracovní položky, je to indikace, že garbage collection neuvolňuje paměť. Například garbage collection nelze provést, pokud existuje dlouhodobá transakce.

Další informace najdete v tématu In-Memory OLTP (optimalizaceIn-Memory).

Název sloupce Typ Description
queue_id int Jedinečný identifikátor fronty.
total_enqueues bigint Celkový počet pracovních položek garbage collection ve frontě od spuštění serveru.
total_dequeues bigint Celkový počet pracovních položek garbage collection bylo od spuštění serveru z této fronty vyřazen.
current_queue_depth bigint Aktuální počet pracovních položek garbage collection v této frontě. Tato položka může znamenat, že jeden nebo více předmětů je odvozeno.
maximum_queue_depth bigint Maximální hloubka, kterou tato fronta zažila.
last_service_ticks bigint CPU tiká v době, kdy byla fronta naposledy servisována.

Povolení

Vyžaduje oprávnění ZOBRAZIT STAV SERVERU.

Oprávnění pro SQL Server 2022 a novější

Vyžaduje oprávnění ZOBRAZIT STAV VÝKONU SERVERU na serveru.

Uživatelský scénář

Tento výstup ukazuje, že SQL Server běží buď na 4 jádrech, nebo byla instance SQL Serveru afinitována na 4 jádra:

Tento výstup ukazuje, že ve frontách nejsou žádné pracovní položky k zpracování. Pro frontu 0 je celkový počet pracovních položek vyřazených z fronty od spuštění SQL 15625 a maximální hloubka fronty je 15625.

queue_id total_enqueues total_dequeues current_queue_depth  maximum_queue_depth  last_service_ticks  
----------------------------------------------------------------------------------------------------  
0        15625                15625    0                    15625                1233573168347  
1        15625                15625    0                    15625                1234123295566  
2        15625                15625    0                    15625                1233569418146  
3        15625                15625    0                    15625                1233571605761  

Viz také

Memory-Optimized Dynamické pohledy na správu tabulek (Transact-SQL)