sys.dm_db_vector_indexes (Transact-SQL)

Platí pro: SQL Server 2025 (17.x) Azure SQL DatabaseDatabáze SQL v Microsoft Fabric

Vrátí přehledy o stavu a výkonu vektorového indexu v reálném čase. Toto zobrazení slouží k monitorování operací údržby vektorových indexů a identifikaci indexů, které vyžadují pozornost.

Transact-SQL konvence syntaxe

Název sloupce Datový typ Description
object_id int ID objektu tabulky.
index_id int ID indexu.
approximate_staleness_percent decimal(10;2) Procento změn čekajících na aktualizaci indexu Vyšší hodnoty označují více čekajících změn.
quantized_keys_used_percent decimal(10;2) Procento prostoru klíče spotřebovaného indexem
last_background_task_time datetime2 Časové razítko poslední údržby na pozadí Určuje, kdy se dokončila poslední operace údržby.
last_background_task_succeeded bit Stav úspěchu poslední úlohy údržby 1 označuje úspěch, 0 značí selhání.
last_background_task_duration_seconds bigint Doba trvání poslední úlohy údržby v sekundách
last_background_task_processed_inserts bigint Počet operací vložení zpracovaných v poslední úloze údržby
last_background_task_processed_deletes bigint Počet operací odstranění zpracovaných v poslední úloze údržby
last_background_task_error_message nvarchar(max) Chybová zpráva, pokud poslední úloha údržby selhala. Hodnota NULL, pokud byl úkol úspěšný.

Poznámky

Toto zobrazení vrátí informace pro všechny vektorové indexy v aktuální databázi. Vektorové indexy provádějí údržbu na pozadí, aby zahrnovaly změny DML (vložení, aktualizace, odstranění). Sloupec approximate_staleness_percent označuje, kolik změn čeká na začlenění do struktury indexu.

Analýza approximate_staleness_percent

Sloupec approximate_staleness_percent označuje, jaké procento změn dat ještě nezpracovalo úloha údržby na pozadí, která udržuje index vektoru up-to-date. Když vložíte, aktualizujete nebo odstraníte řádky v tabulce s vektorovým indexem, tyto změny se okamžitě nezačlení do struktury grafu DiskANN. Místo toho se změny zařadí do fronty a zpracovávají úlohou údržby na pozadí. Procento neagrese se při zpracování backlogu vrátí zpět na 0%.

Pokud máte například tabulku s 10 000 řádky a vektorovým indexem a vložíte 500 nových řádků, je neautornost přibližně 5% (500 čekajících změn z 10 500 celkových řádků). S tím, jak údržba na pozadí zpracovává tyto 500 vložení, procento neagrese se vrátí zpět k nule.

Dopad na dotazy VECTOR_SEARCH

VECTOR_SEARCH používá aktuální stav grafu DiskANN v kombinaci s čekajícími změnami, které ještě nebyly plně začleněny. To znamená:

  • I když je neautnost vyšší než nula, vaše VECTOR_SEARCH dotazy stále vrací výsledky a obsahují nedávno vložené nebo aktualizované řádky.
  • Vyhledávací algoritmus ale nemůže využít úplnou strukturu grafu pro optimální řazení, dokud se nedokončí údržba na pozadí.
  • Přesnost řazení se může snížit. Skóre podobnosti a řazení můžou být méně optimální pro řádky, které ještě nejsou plně integrované do struktury indexu.

Kvalita vyhledávání je nejlepší, když jsou všechny vektory správně integrovány do grafu a procento neakutnosti je nula.

Interpretace zastaralých hodnot

Neexistuje žádná univerzální prahová hodnota pro "vysokou" neakutnost, protože závisí na vašem vzoru úloh. K interpretaci hodnot, které vidíte, použijte tyto pokyny:

  1. Během dávkového zatížení: 20–30% nečekanost, která během minut klesne na téměř nulu, je očekávaná a normální.
  2. Během pravidelných operací: 0–5% neschůdnost indikuje, že údržba na pozadí udržuje krok s vaší úlohou.

Pokud narazíte na některý z následujících scénářů, prozkoumejte stav indexu:

  • Trvalou vysokou neakutnost: Hodnoty konzistentně nad 10–15% během pravidelných operací naznačují, že údržba na pozadí nemůže držet krok s vaší rychlostí DML.
  • Snížení úplnosti: Všimněte si měřitelného poklesu VECTOR_SEARCH relevance výsledků.
  • Selhání úkolů: Hodnota last_background_task_succeeded je 0. Na pozadí dochází k chybám a index se neaktualizuje.

Kdy znovu sestavit vektorový index

Při sledování výkonu nebo snížení výkonu zvažte opětovné sestavení indexu vektoru, a ne výhradně na procentech neakutnosti. Scénáře opětovného sestavení zahrnují:

  • Výrazný pokles kvality odvolání: Hledání vektorů vrací méně relevantních výsledků, než se čekalo
  • Nahrazení velkých objemů dat: Při nahrazení většiny nebo všech vkládání (například opětovné vložení pomocí nového modelu)

Podrobné pokyny ke scénářům kvality a údržby dat najdete v pokynech pro kvalitu dat a údržbu pro indexy vektorů.

Monitorujte tuto metriku, abyste porozuměli vzorům údržby indexů a identifikovali indexy vyžadující pozornost.

Povolení

Vyžaduje VIEW DATABASE STATE oprávnění k databázi.

Examples

A. Monitorování všech vektorových indexů

Následující dotaz monitoruje všechny vektorové indexy v aktuální databázi a zobrazuje neakutnost a stav údržby.

SELECT 
    DB_NAME() AS database_name,
    OBJECT_NAME(object_id) AS table_name,
    index_id,
    approximate_staleness_percent,
    last_background_task_succeeded
FROM sys.dm_db_vector_indexes
ORDER BY approximate_staleness_percent DESC;

B. Identifikace indexů vyžadujících pozornost

Následující dotaz najde vektorové indexy s vysokou neakutností nebo nedávnými chybami údržby.

SELECT 
    OBJECT_NAME(object_id) AS table_name,
    approximate_staleness_percent,
    last_background_task_error_message
FROM sys.dm_db_vector_indexes
WHERE 
    approximate_staleness_percent > 15.0  -- Example value, adjust based on your workload
    OR last_background_task_succeeded = 0  -- Recent failure
ORDER BY approximate_staleness_percent DESC;