Delen via


sys.dm_db_vector_indexes (Transact-SQL)

Van toepassing op: SQL Server 2025 (17.x) Azure SQL DatabaseSQL database in Microsoft Fabric

Retourneert realtime inzichten in de status en prestaties van vectorindexen. Gebruik deze weergave voor het bewaken van onderhoudsbewerkingen voor vectorindexen en het identificeren van indexen die aandacht vereisen.

Transact-SQL syntaxis-conventies

Kolomnaam Gegevenstype Beschrijving
object_id int Tabelobject-id.
index_id int Index-id.
approximate_staleness_percent decimal(10,2) Percentage wijzigingen in behandeling bij indexupdate. Hogere waarden geven meer wijzigingen in behandeling aan.
quantized_keys_used_percent decimal(10,2) Percentage sleutelruimte dat door de index wordt verbruikt.
last_background_task_time datetime2 Laatste tijdstempel voor onderhoud op de achtergrond. Geeft aan wanneer de laatste onderhoudsbewerking is voltooid.
last_background_task_succeeded bit Geslaagde status van laatste onderhoudstaak. 1 geeft aan dat het is gelukt, 0 geeft aan dat de fout is mislukt.
last_background_task_duration_seconds bigint Duur van laatste onderhoudstaak in seconden.
last_background_task_processed_inserts bigint Het aantal invoegbewerkingen dat in de laatste onderhoudstaak is verwerkt.
last_background_task_processed_deletes bigint Het aantal verwijderingsbewerkingen dat in de laatste onderhoudstaak is verwerkt.
last_background_task_error_message nvarchar(max) Foutbericht als de laatste onderhoudstaak is mislukt. NULL als de taak is geslaagd.

Opmerkingen

Deze weergave retourneert informatie voor alle vectorindexen in de huidige database. Vectorindexen voeren achtergrondonderhoud uit om DML-wijzigingen op te nemen (invoegingen, updates, verwijderingen). De approximate_staleness_percent kolom geeft aan hoeveel wijzigingen in de indexstructuur in behandeling zijn.

Approximate_staleness_percent analyseren

De approximate_staleness_percent kolom geeft aan welk percentage gegevenswijzigingen nog niet is verwerkt door de onderhoudstaak op de achtergrond die de vectorindex up-to-date houdt. Wanneer u rijen in een tabel met een vectorindex invoegt, bijwerkt of verwijdert, worden deze wijzigingen niet onmiddellijk opgenomen in de structuur van de DiskANN-grafiek. In plaats daarvan worden de wijzigingen in de wachtrij geplaatst en verwerkt door een onderhoudstaak op de achtergrond. Het verouderingspercentage daalt terug naar 0% wanneer de achterstand wordt verwerkt.

Als u bijvoorbeeld een tabel met 10.000 rijen en een vectorindex hebt en u 500 nieuwe rijen invoegt, is het verouderingspercentage ongeveer 5% (500 wachtende wijzigingen van 10.500 totaalrijen). Naarmate de achtergrondonderhoud deze 500 invoegingen verwerkt, daalt het verouderingspercentage terug naar nul.

Invloed op VECTOR_SEARCH query's

VECTOR_SEARCH gebruikt de huidige status van de DiskANN-grafiek in combinatie met wachtende wijzigingen die nog niet volledig zijn opgenomen. Dit betekent:

  • Zelfs wanneer veroudering hoger is dan nul, retourneren uw VECTOR_SEARCH query's nog steeds resultaten en bevatten ze onlangs ingevoegde of bijgewerkte rijen.
  • Het zoekalgoritmen kunnen echter niet gebruikmaken van de volledige grafiekstructuur voor optimale rangschikking totdat het onderhoud van de achtergrond is voltooid.
  • De nauwkeurigheid van de classificatie kan worden verminderd. De overeenkomsten en volgorde zijn mogelijk minder optimaal voor rijen die nog niet volledig zijn geïntegreerd in de indexstructuur.

De zoekkwaliteit is het beste wanneer alle vectoren correct zijn geïntegreerd in de grafiek en het verouderingspercentage nul is.

Verouderingswaarden interpreteren

Er is geen universele drempelwaarde voor 'hoge' veroudering, omdat deze afhankelijk is van uw workloadpatroon. Gebruik deze richtlijnen om de waarden te interpreteren die u ziet:

  1. Tijdens batchbelastingen: 20-30% verouderingen die binnen enkele minuten tot bijna nul dalen, worden verwacht en normaal.
  2. Tijdens normale bewerkingen: 0-5% veroudering geeft aan dat het achtergrondonderhoud het tempo van uw workload houdt.

Onderzoek de status van uw index als u een van de volgende scenario's tegenkomt:

  • Aanhoudende hoge veroudering: Waarden die consistent hoger zijn dan 10-15% tijdens normale bewerkingen stellen voor dat het achtergrondonderhoud uw DML-snelheid niet kan bijhouden.
  • Verminderde relevante overeenkomsten: u ziet een meetbare daling van de relevantie van VECTOR_SEARCH resultaten.
  • Taakfouten: de last_background_task_succeeded waarde is 0. Het achtergrondproces ondervindt fouten en kan de index niet bijwerken.

Wanneer een vectorindex opnieuw moet worden opgebouwd

Overweeg om een vectorindex opnieuw te bouwen wanneer u prestatie- of terugroepingsdegradatie bekijkt, niet alleen op basis van verouderingspercentage. Scenario's voor herbouwen zijn onder andere:

  • Aanzienlijke daling van de kwaliteit van relevante overeenkomsten: Vector search retourneert minder relevante resultaten dan verwacht
  • Grootschalige gegevensvervanging: wanneer de meeste of alle insluitingen worden vervangen (bijvoorbeeld opnieuw insluiten met een nieuw model)

Zie de richtlijnen voor gegevenskwaliteit en onderhoud voor vectorindexen voor gedetailleerde richtlijnen voor gegevenskwaliteit en -onderhoud.

Bewaak deze metrische waarde om inzicht te hebben in onderhoudspatronen voor indexen en om indexen te identificeren die aandacht vereisen.

toestemmingen

Vereist VIEW DATABASE STATE machtiging voor de database.

Examples

A. Alle vectorindexen bewaken

Met de volgende query worden alle vectorindexen in de huidige database bewaakt, met de verouderings- en onderhoudsstatus.

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. Indexen identificeren die aandacht nodig hebben

Met de volgende query worden vectorindexen met hoge veroudering of recente onderhoudsfouten gevonden.

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;