sys.dm_db_vector_indexes (Transact-SQL)

Şunlar için geçerlidir: SQL Server 2025 (17.x) Azure SQL VeritabanıSQL database in Microsoft Fabric

Vektör dizininin durumu ve performansı hakkında gerçek zamanlı içgörüler döndürür. Vektör dizini bakım işlemlerini izlemek ve dikkat edilmesi gereken dizinleri tanımlamak için bu görünümü kullanın.

Transact-SQL söz dizimi kuralları

Sütun adı Veri türü Description
object_id int Tablo nesnesi kimliği.
index_id int Dizin Kimliği.
approximate_staleness_percent ondalık(10,2) Dizin güncelleştirmesini bekleyen değişikliklerin yüzdesi. Daha yüksek değerler daha fazla bekleyen değişikliği gösterir.
quantized_keys_used_percent ondalık(10,2) Dizin tarafından kullanılan anahtar alanı yüzdesi.
last_background_task_time datetime2 Son arka plan bakım zaman damgası. Son bakım işleminin ne zaman tamamlandığını gösterir.
last_background_task_succeeded bit Son bakım görevinin başarı durumu. 1 başarıyı, 0 ise başarısızlığı gösterir.
last_background_task_duration_seconds bigint Son bakım görevinin saniye cinsinden süresi.
last_background_task_processed_inserts bigint Son bakım görevinde işlenen ekleme işlemlerinin sayısı.
last_background_task_processed_deletes bigint Son bakım görevinde işlenen silme işlemlerinin sayısı.
last_background_task_error_message nvarchar(max) Son bakım görevi başarısız olduysa hata iletisi. Görev başarılı olursa NULL.

Açıklamalar

Bu görünüm, geçerli veritabanındaki tüm vektör dizinleri için bilgi döndürür. Vektör dizinleri, DML değişikliklerini (eklemeler, güncelleştirmeler, silmeler) birleştirmek için arka plan bakımı gerçekleştirir. sütun, approximate_staleness_percent dizin yapısına ekleme bekleyen kaç değişiklik olduğunu gösterir.

analiz approximate_staleness_percent

Sütun, approximate_staleness_percent vektör dizininizi -date up-totutan arka plan bakım görevi tarafından henüz veri değişikliklerinin yüzde kaçının işlenmediğini gösterir. Vektör dizini olan bir tabloya satır eklediğinizde, güncelleştirdiğinizde veya sildiğinizde, bu değişiklikler diskANN grafik yapısına hemen dahil olmaz. Bunun yerine, değişiklikler bir arka plan bakım görevi tarafından kuyruğa alınır ve işlenir. Kapsam işlenirken eskime yüzdesi 0% geri düşer.

Örneğin, 10.000 satır ve vektör dizini içeren bir tablonuz varsa ve 500 yeni satır eklerseniz eskime yüzdesi yaklaşık 5% olur (toplam 10.500 satırdan 500 bekleyen değişiklik). Arka plan bakımı bu 500 eklemeyi işlerken eskime yüzdesi sıfıra geri döner.

VECTOR_SEARCH sorguları üzerindeki etkisi

VECTOR_SEARCH DiskANN grafiğinin geçerli durumunu, henüz tam olarak birleştirilmemiş bekleyen değişikliklerle birlikte kullanır. Bu, şu anlama gelir:

  • Eskime durumu sıfırdan yüksek olsa bile sorgularınız VECTOR_SEARCH yine de sonuç döndürür ve son eklenen veya güncelleştirilen satırları içerir.
  • Ancak, arama algoritması, arka plan bakımı tamamlanana kadar optimal sıralama için tam grafik yapısını kullanamaz.
  • Derecelendirme doğruluğu azaltılabilir. Benzerlik puanları ve sıralama, henüz dizin yapısıyla tam olarak tümleştirilmemiş satırlar için daha az uygun olabilir.

Arama kalitesi, tüm vektörler grafla düzgün bir şekilde tümleştirildiğinde ve eskime yüzdesi sıfır olduğunda en iyisidir.

Eskime değerlerini yorumlama

İş yükü deseninize bağlı olduğundan "yüksek" eskime durumu için evrensel eşik yoktur. Gördüğünüz değerleri yorumlamak için şu yönergeleri kullanın:

  1. Toplu yüklemeler sırasında: Dakikalar içinde sıfıra yakın bir değere düşen 20-30% eskime durumu beklenir ve normaldir.
  2. Normal işlemler sırasında: 0-5% eskimesi, arka plan bakımının iş yükünüzle aynı hızda ilerlediğini gösterir.

Aşağıdaki senaryolardan herhangi biri ile karşılaşırsanız dizin durumunuzu araştırın:

  • Sürekli yüksek eskime: Düzenli işlemler sırasında tutarlı olarak 10-15% üzerindeki değerler arka plan bakımının DML hızınıza ayak uyduramazsınız.
  • Daha az geri çekme: Sonuçların ilgisinde VECTOR_SEARCH ölçülebilir bir düşüş fark edeceksiniz.
  • Görev hataları: last_background_task_succeeded Değer 0'dır. Arka plan işlemi hatalarla karşılaşıyor ve dizini güncelleştiremiyor.

Vektör dizini ne zaman yeniden derlenmesi gerekir?

Performans düşüşü veya geri çağırma düşüşü gözlemlerken vektör dizinini yeniden oluşturmayı göz önünde bulundurun, yalnızca eskime yüzdesine göre değil. Yeniden oluşturma senaryoları şunlardır:

  • Önemli geri çağırma kalitesi düşüşü: Vektör araması beklenenden daha az ilgili sonuç döndürür
  • Büyük ölçekli veri değiştirme: Eklemelerin çoğu veya tümü değiştirildiğinde (örneğin, yeni bir modelle yeniden ekleme)

Veri kalitesi ve bakım senaryoları hakkında ayrıntılı yönergeler için bkz. Vektör dizinleri için veri kalitesi ve bakım kılavuzu.

Dizin bakım desenlerini anlamak ve dikkat gerektiren dizinleri belirlemek için bu ölçümü izleyin.

Permissions

Veritabanı üzerinde VIEW DATABASE STATE izni gereklidir.

Examples

A. Tüm vektör dizinlerini izleme

Aşağıdaki sorgu geçerli veritabanındaki tüm vektör dizinlerini izler ve eskime durumunu ve bakım durumunu gösterir.

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. Dikkat edilmesi gereken dizinleri belirleme

Aşağıdaki sorgu, yüksek eskime veya son bakım hatalarına sahip vektör dizinlerini bulur.

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;