Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för: SQL Server 2025 (17.x)
Azure SQL Database
Azure SQL Managed Instance
SQL-databas i Microsoft Fabric
Den dynamiska sys.dm_db_vector_indexes hanteringsvyn ger realtidsinformation om vektorindexets hälsa och bakgrundsunderhåll. Använd denna vy för att övervaka DiskANN-grafens upphämtningsoperationer och identifiera vektorindex som kan kräva uppmärksamhet.
Transact-SQL syntaxkonventioner
| Kolumnnamn | Datatyp | Beskrivning |
|---|---|---|
object_id |
int | Objekt-ID för tabellen som innehåller vektorindexet. |
index_id |
int | ID för vektorindexet. |
graph_catchup_pending_percent |
decimal(10,2) | Ungefärlig procentandel av ändringar som väntar på att införlivas i DiskANN-grafen. Värdet rör sig mot noll när bakgrundsunderhåll bearbetar de väntande ändringarna. Värdet kan vara NULL om ingen grafupphämtningsuppgift har körts. |
quantized_keys_used_percent |
decimal(10,2) | Procentandel av det kvantiserade nyckelutrymmet som används av vektorindexet. |
last_background_task_execution_time |
datetime2 | Tid då den senaste bakgrundsunderhållsuppgiften utfördes.
NULL om ingen bakgrundsuppgift har körts. |
last_background_task_succeeded |
bit | Framgångsstatus för den senaste bakgrundsunderhållsuppgiften.
1 indikerar framgång, 0 indikerar misslyckande och NULL indikerar att ingen bakgrundsuppgift har utförts. |
last_background_task_duration_seconds |
bigint | Varaktigheten av den senaste bakgrundsunderhållsuppgiften, i sekunder.
NULL om ingen bakgrundsuppgift har körts. |
last_background_task_processed_inserts |
bigint | Antal insatser bearbetade av den senaste bakgrundsunderhållsuppgiften.
NULL om ingen bakgrundsuppgift har körts. |
last_background_task_processed_deletes |
bigint | Antal raderingar som hanteras av den senaste bakgrundsunderhållsuppgiften.
NULL om ingen bakgrundsuppgift har körts. |
last_background_task_error_message |
nvarchar(max) | Felmeddelande rapporterat av den senaste bakgrundsunderhållsuppgiften.
NULL om inget fel rapporterats eller ingen bakgrundsuppgift har körts. |
Anmärkningar
Denna vy returnerar en rad för varje vektorindex i den aktuella databasen.
Vektorindex använder asynkront bakgrundsunderhåll för att införliva dataändringar, inklusive insättningar, uppdateringar och borttagningar, i DiskANN-grafen. Kolumnen graph_catchup_pending_percent visar den ungefärliga procentandelen förändringar som fortfarande väntar på att införlivas i grafen.
Tillgänglighet av funktioner
Vektordatatyp- och vektorfunktionerna finns i allmänhet tillgängliga i SQL Server 2025, Azure SQL Database, Azure SQL Managed Instance och SQL Database in Fabric.
Vektorindex finns vanligtvis tillgängliga i Azure SQL Database, SQL-databaser i Fabric och Azure SQL Managed Instance konfigurerade med policyn för alltidup-todatumuppdatering.
Vektorindex är förhandsvisningsfunktioner i SQL Server 2025 och Azure SQL Managed Instance konfigurerade med SQL Server 2025-uppdateringspolicyn.
Analysera graph_catchup_pending_percent
Kolumnen graph_catchup_pending_percent anger den ungefärliga procentandelen dataändringar som ännu inte är inkorporerade i DiskANN-grafen.
När du infogar, uppdaterar eller tar bort rader i en tabell med ett vektorindex införlivas inte ändringarna omedelbart i grafen. Ändringarna köas och behandlas asynkront av en bakgrundsunderhållsuppgift.
Ett tillfälligt icke-noll värde efter dataändringar förväntas. Procentandelen rör sig mot noll när bakgrundsunderhåll inkluderar väntande ändringar i grafen.
Värdet noll indikerar att grafunderhållet har hunnit ikapp. Ett NULL-värde kan indikera att ingen grafupphämtningsuppgift ännu har körts.
Påverkan på VECTOR_SEARCH frågor
VECTOR_SEARCH fortsätter att fungera medan grafupphämtning pågår. Den använder den aktuella DiskANN-grafen tillsammans med ändringar som ännu inte är fullt integrerade i grafen.
Det här beteendet innebär:
-
VECTOR_SEARCHkan fortfarande betrakta nyligen insatta eller uppdaterade rader. - Rader som inte är fullt integrerade i grafen kan inte utnyttja grafnavigeringen fullt ut.
- Sökprestanda eller återkallelse kan påverkas medan en stor eftersläpning av en graf bearbetas.
- Sökkvalitet och prestanda är mest förutsägbara när
graph_catchup_pending_percentden är noll eller förblir konsekvent låg.
Tolka grafens catchup-värden
Det finns ingen universell tröskel för hög grafuppföljningsprocent. En lämplig tröskel beror på arbetsbelastning, dataförändringshastighet, databaskonfiguration och förväntat underhållsintervall.
Under batchlastning eller perioder med hög DML-aktivitet kan man förvänta sig en tillfällig ökning av grafens upphämtningsprocent. Övervaka om värdet rör sig mot noll efter att arbetsbelastningen minskat.
Undersök vektorindexet om du observerar något av följande tillstånd:
-
Uthållig upphämtningsbacklogg i grafen:
graph_catchup_pending_percentförblir upphöjd och rör sig inte mot noll. -
Bakgrundsuppgiftsmisslyckande:
last_background_task_succeededär 0. -
Bakgrundsuppgiftsfel:
last_background_task_error_messageinnehåller ett fel. -
Minskad återkallelse:
VECTOR_SEARCHGer färre relevanta resultat än väntat. - Oväntad prestandaförsämring: Vektorsökningslatens ökar medan grafens upphämtningseftersläp förblir hög.
NULL Värden för kolumnerna för bakgrundsuppgifter indikerar inte nödvändigtvis ett misslyckande. De kan ange att ingen bakgrundsunderhållsuppgift har utförts än.
När du ska återskapa ett vektorindex
Överväg att bygga om ett vektorindex när du ser mätbar prestanda eller återkallningsförsämring. Bygg inte om ett index baserat enbart på ett tillfälligt icke-noll graph_catchup_pending_percent värde.
Scenarier där återuppbyggnad kan vara lämplig inkluderar:
- Betydande återkallningsförsämring: Vektorsökning ger färre relevanta resultat än väntat efter att grafens upphämtning är klar.
- Storskalig dataersättning: De flesta eller alla inbäddningar ersätts, till exempel när data bäddas in igen med en annan modell.
- Ihållande underhållsproblem: Grafens upphämtningsprocent minskar inte och bakgrundsunderhållet misslyckas upprepade gånger.
För mer information, se Data Quality and Maintenance Guide för vektorindex.
Permissions
Kräver VIEW DATABASE STATE behörighet för databasen.
Examples
A. Övervaka alla vektorindex
Följande fråga returnerar grafens catch-up- och bakgrundsunderhållsinformation för alla vektorindex i den aktuella databasen:
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. Övervaka en specifik tabell
Följande fråga returnerar underhållsinformation för vektorindex för dbo.Articles tabellen:
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. Identifiera index som kan kräva uppmärksamhet
Följande exempel använder 15 procent som en illustrativ övervakningströskel. Välj en tröskel som passar din arbetsbelastning:
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;