Sdílet prostřednictvím


In-Memory správa paměti OLTP

platí pro: SQL Server Azure SQL DatabaseAzure SQL Managed Instance

Datový řádek se považuje za zastaralý, pokud byl odstraněn transakcí, která již není aktivní. Zastaralý řádek může být zahrnut do procesu sběru odpadu. Následující jsou charakteristiky garbage collection v rámci In-Memory OLTP.

  • Neblokující. Uvolňování paměti je rozloženo v průběhu času s minimálním dopadem na zatížení.

  • Kooperativa Uživatelské transakce se účastní správy paměti spolu s hlavním vláknem správy paměti.

  • Efektivní. Uživatelské transakce odpojí zastaralé řádky v používané přístupové cestě (indexu). Tím se sníží potřebná práce, když se řádek nakonec odebere.

  • Responzivní. Tlak paměti vede k agresivnímu uvolňování paměti.

  • Škálovatelné: Po potvrzení transakce uživatelů přispívají k procesu uvolňování paměti. Čím více transakční aktivity, tím více transakcí delinkuje zastaralé řádky.

Uvolňování paměti je řízeno hlavním vláknem uvolňování paměti. Hlavní vlákno uvolňování paměti se spouští každou minutu nebo když počet potvrzených transakcí překročí vnitřní prahovou hodnotu. Úkolem garbage collectoru je:

  • Identifikujte transakce, které odstranily nebo aktualizovaly sadu řádků a byly dokončeny před nejstarší aktivní transakcí.

  • Verze řádků identity vytvořené těmito starými transakcemi

  • Seskupte staré řádky do jedné nebo více jednotek, přičemž každá obsahuje 16 řádků. Tím se práce garbage collectoru rozděluje do menších jednotek.

  • Přesuňte tyto pracovní jednotky do fronty pro sběr paměti, jednu pro každý plánovač. Podrobnosti najdete v DMV pro uvolňování paměti: sys.dm_xtp_gc_stats (Transact-SQL), sys.dm_db_xtp_gc_cycle_stats (Transact-SQL) a sys.dm_xtp_gc_queue_stats (Transact-SQL).

Po potvrzení uživatelské transakce identifikuje všechny položky ve frontě přidružené k plánovači, na kterém probíhala, a poté uvolní paměť. Pokud je fronta uvolňování paměti v plánovači prázdná, vyhledá jakoukoli neprázdnou frontu v aktuálním uzlu NUMA. Pokud je nízká transakční aktivita a je tlak na paměť, může hlavní vlákno garbage collectoru shromažďovat řádky z libovolné fronty. Pokud nenastane žádná transakční aktivita po smazání velkého počtu řádků a není žádný tlak na paměť, odstraněné řádky nebudou uvolněny z paměti, dokud se transakční aktivita neobnoví nebo popřípadě dojde k tlaku na paměť.

Viz také

Správa paměti pro In-Memory OLTP