Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro: SQL Server 2025 (17.x)
Azure SQL Database
Spravovaná instance Azure SQL
SQL databáze v Microsoft Fabric
Dynamický sys.dm_db_vector_indexes pohled správy vrací informace v reálném čase o stavu vektorového indexu a údržbě pozadí. Použijte tento pohled ke sledování operací dohání grafů DiskANN a identifikaci vektorových indexů, které mohou vyžadovat pozornost.
| Název sloupce | Datový typ | Description |
|---|---|---|
object_id |
int | ID objektu tabulky, která obsahuje vektorový index. |
index_id |
int | ID vektorového indexu. |
graph_catchup_pending_percent |
decimal(10;2) | Přibližné procento změn čekajících na začlenění do grafu DiskANN. Hodnota se blíží nule, jak údržba na pozadí zpracovává čekající změny. Hodnota může být NULL , pokud nebyla vykonána žádná úloha dohnání grafu. |
quantized_keys_used_percent |
decimal(10;2) | Procento kvantovaného klíčového prostoru využívaného vektorovým indexem. |
last_background_task_execution_time |
datetime2 | Čas, kdy byla vykonána poslední úloha údržby na pozadí.
NULL pokud žádný background task nebyl vykonán. |
last_background_task_succeeded |
bit | Úspěšnost poslední údržby na pozadí.
1 označuje úspěch, 0 znamená neúspěch a NULL uvádí, že žádný úkol na pozadí nebyl vykonán. |
last_background_task_duration_seconds |
bigint | Délka poslední údržby na pozadí, v sekundách.
NULL pokud žádný background task nebyl vykonán. |
last_background_task_processed_inserts |
bigint | Počet insertů zpracovaných nejnovější údržbovou úlohou na pozadí.
NULL pokud žádný background task nebyl vykonán. |
last_background_task_processed_deletes |
bigint | Počet smazání zpracovaných nejnovější úlohou údržby na pozadí.
NULL pokud žádný background task nebyl vykonán. |
last_background_task_error_message |
nvarchar(max) | Chybová zpráva hlášená nejnovější údržbou na pozadí.
NULL pokud nebyla hlášena žádná chyba nebo nebyl vykonán žádný úkol na pozadí. |
Poznámky
Tento pohled vrací jeden řádek pro každý vektorový index v aktuální databázi.
Vektorové indexy využívají asynchronní údržbu na pozadí k začlenění úprav dat, včetně vkládání, aktualizací a mazání, do grafu DiskANN. Sloupec graph_catchup_pending_percent ukazuje přibližné procento změn, které stále čekají na začlenění do grafu.
Dostupnost funkcí
Vektorové datové typy a vektorové funkce jsou obecně dostupné v SQL Server 2025, Azure SQL Database, Azure SQL Managed Instance a SQL databázi ve Fabric.
Vektorové indexy jsou obecně dostupné v Azure SQL Database, SQL databáze v Fabric a Azure SQL Managed Instance konfigurovány s pravidlem aktualizacevždyup-todatum.
Vector indexy jsou náhledové funkce v SQL Server 2025 a Azure SQL Managed Instance, konfigurované s aktualizační politikou SQL Server 2025.
Analyzujte graph_catchup_pending_percent
Sloupec graph_catchup_pending_percent ukazuje přibližné procento změn dat, které ještě nejsou zahrnuty do grafu DiskANN.
Když vložíte, aktualizujete nebo smažete řádky v tabulce s vektorovým indexem, změny nejsou okamžitě začleněny do grafu. Změny jsou zařazovány do fronty a zpracovávány asynchronně pomocí údržby na pozadí.
Po úpravě dat se očekává dočasná nenulová hodnota. Procento se posouvá k nule, protože údržba na pozadí zahrnuje do grafu očekávané změny.
Hodnota nula znamená, že údržba grafu dohnala. Hodnota NULL může naznačovat, že dohání grafu dosud nebylo provedeno.
Dopad na dotazy VECTOR_SEARCH
VECTOR_SEARCH pokračuje v provozu, zatímco probíhá dohání grafů. Používá aktuální graf DiskANN spolu se změnami, které dosud nejsou plně začleněny do grafu.
Toto chování znamená:
-
VECTOR_SEARCHstále lze považovat za nedávno vložené nebo aktualizované řádky. - Řádky, které nejsou plně začleněny do grafu, nemohou plně využít navigaci v grafu.
- Výkon vyhledávání nebo vybavování může být ovlivněn, zatímco se zpracovává velký backlog pro dohnání grafů.
- Kvalita vyhledávání a výkon jsou nejlépe předvídatelné, když
graph_catchup_pending_percentje nulová nebo zůstává konzistentně nízká.
Interpretace hodnot dohání grafu
Neexistuje univerzální hranice pro vysoké procento dohnání grafů. Vhodný práh závisí na zátěži, rychlosti úprav dat, konfiguraci databáze a očekávaném intervalu údržby.
Během hromadného načítání nebo období vysoké aktivity DML očekávejte dočasné zvýšení procenta dohnání grafů. Sledujte, zda se hodnota po poklesu pracovní zátěže posouvá k nule.
Prozkoumejte vektorový index, pokud pozorujete některou z následujících podmínek:
-
Trvalý zpoždění v dohnání grafů:
graph_catchup_pending_percentzůstává zvýšené a nepohybuje se směrem k nule. -
Selhání pozadí úkolu:
last_background_task_succeededje 0. -
Chyba v pozadí úkolu:
last_background_task_error_messageobsahuje chybu. -
Snížené vybavování:
VECTOR_SEARCHPřináší méně relevantních výsledků, než se očekávalo. - Neočekávané zhoršení výkonu: Latence vektorového vyhledávání roste, zatímco backlog dohání grafů zůstává zvýšený.
NULL Hodnoty sloupců pozadí úkolů nemusí nutně znamenat selhání. Mohou uvádět, že žádná údržba na pozadí ještě nebyla provedena.
Kdy znovu sestavit vektorový index
Zvažte přestavbu vektorového indexu, když pozorujete měřitelný výkon nebo zhoršení pamatování. Nevytvářejte index přestavovat jen na základě dočasné nenulové graph_catchup_pending_percent hodnoty.
Scénáře, ve kterých by byla rekonstrukce vhodná, zahrnují:
- Významné zhoršení paměti: Vektorové vyhledávání vrací méně relevantních výsledků, než se očekávalo, po dokončení dohání grafu.
- Velkoplošná výměna dat: Většina nebo všechna embeddingy jsou nahrazeny, například když jsou data znovu vložena do jiného modelu.
- Přetrvávající problémy s údržbou: Procento dohnání grafů se nesnižuje a údržba na pozadí opakovaně selhává.
Pro více informací viz pokyny k kvalitě dat a údržbě vektorových indexů.
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 vrací informace o dohnání grafu a údržbě na pozadí pro všechny vektorové indexy v aktuální databázi:
SELECT
DB_NAME() AS database_name,
OBJECT_SCHEMA_NAME(v.object_id) AS schema_name,
OBJECT_NAME(v.object_id) AS table_name,
i.name AS vector_index_name,
v.graph_catchup_pending_percent,
v.quantized_keys_used_percent,
v.last_background_task_execution_time,
v.last_background_task_succeeded,
v.last_background_task_duration_seconds,
v.last_background_task_processed_inserts,
v.last_background_task_processed_deletes,
v.last_background_task_error_message
FROM sys.dm_db_vector_indexes AS v
INNER JOIN sys.indexes AS i
ON i.object_id = v.object_id
AND i.index_id = v.index_id
ORDER BY
v.graph_catchup_pending_percent DESC,
schema_name,
table_name,
vector_index_name;
B. Sledujte konkrétní tabulku
Následující dotaz vrací informace o údržbě vektorového indexu pro tabulku dbo.Articles :
SELECT
OBJECT_SCHEMA_NAME(v.object_id) AS schema_name,
OBJECT_NAME(v.object_id) AS table_name,
i.name AS vector_index_name,
v.graph_catchup_pending_percent,
v.last_background_task_execution_time,
v.last_background_task_succeeded,
v.last_background_task_error_message
FROM sys.dm_db_vector_indexes AS v
INNER JOIN sys.indexes AS i
ON i.object_id = v.object_id
AND i.index_id = v.index_id
WHERE v.object_id = OBJECT_ID(N'dbo.Articles');
C. Identifikujte indexy, které by mohly vyžadovat pozornost
Následující příklad používá 15 procent jako ilustrativní prah monitorování. Vyberte si práh vhodný pro vaši pracovní zátěž:
DECLARE @GraphCatchupThreshold decimal(10,2) = 15.0;
SELECT
OBJECT_SCHEMA_NAME(v.object_id) AS schema_name,
OBJECT_NAME(v.object_id) AS table_name,
i.name AS vector_index_name,
v.graph_catchup_pending_percent,
v.last_background_task_execution_time,
v.last_background_task_succeeded,
v.last_background_task_error_message
FROM sys.dm_db_vector_indexes AS v
INNER JOIN sys.indexes AS i
ON i.object_id = v.object_id
AND i.index_id = v.index_id
WHERE
v.graph_catchup_pending_percent > @GraphCatchupThreshold
OR v.last_background_task_succeeded = 0
OR v.last_background_task_error_message IS NOT NULL
ORDER BY v.graph_catchup_pending_percent DESC;