sys.dm_db_vector_indexes (Transact-SQL)

Berlaku untuk: SQL Server 2025 (17.x) Azure SQL DatabaseDatabase SQL di Microsoft Fabric

Mengembalikan wawasan real-time ke dalam kesehatan dan performa indeks vektor. Gunakan tampilan ini untuk memantau operasi pemeliharaan indeks vektor dan mengidentifikasi indeks yang perlu diperhatikan.

Konvensi sintaks Transact-SQL

Nama kolom Jenis data Deskripsi
object_id int ID objek tabel.
index_id int ID Indeks.
approximate_staleness_percent desimal(10,2) Persentase perubahan yang menunggu pembaruan indeks. Nilai yang lebih tinggi menunjukkan perubahan yang lebih tertunda.
quantized_keys_used_percent desimal(10,2) Persentase ruang kunci yang digunakan oleh indeks.
last_background_task_time datetime2 Tanda waktu pemeliharaan latar belakang terakhir. Menunjukkan kapan operasi pemeliharaan terakhir selesai.
last_background_task_succeeded bit Status keberhasilan tugas pemeliharaan terakhir. 1 menunjukkan keberhasilan, 0 menunjukkan kegagalan.
last_background_task_duration_seconds bigint Durasi tugas pemeliharaan terakhir dalam hitungan detik.
last_background_task_processed_inserts bigint Jumlah operasi sisipan yang diproses dalam tugas pemeliharaan terakhir.
last_background_task_processed_deletes bigint Jumlah operasi penghapusan yang diproses dalam tugas pemeliharaan terakhir.
last_background_task_error_message nvarchar(maks) Pesan kesalahan jika tugas pemeliharaan terakhir gagal. NULL jika tugas berhasil.

Keterangan

Tampilan ini mengembalikan informasi untuk semua indeks vektor dalam database saat ini. Indeks vektor melakukan pemeliharaan latar belakang untuk menggabungkan perubahan DML (sisipan, pembaruan, penghapusan). Kolom approximate_staleness_percent menunjukkan berapa banyak perubahan yang tertunda dimasukkan ke dalam struktur indeks.

Menganalisis approximate_staleness_percent

Kolom approximate_staleness_percent menunjukkan persentase perubahan data apa yang belum diproses oleh tugas pemeliharaan latar belakang yang menjaga indeks vektor Anda up-to-date. Saat Anda menyisipkan, memperbarui, atau menghapus baris dalam tabel dengan indeks vektor, perubahan tersebut tidak segera dimasukkan ke dalam struktur grafik DiskANN. Sebagai gantinya, perubahan diantrekan dan diproses oleh tugas pemeliharaan latar belakang. Persentase kedaluarsa turun kembali ke arah 0% saat backlog diproses.

Misalnya, jika Anda memiliki tabel dengan 10.000 baris dan indeks vektor, dan Anda menyisipkan 500 baris baru, persentase kedaluarsa adalah sekitar 5% (500 perubahan tertunda dari total 10.500 baris). Saat pemeliharaan latar belakang memproses 500 sisipan ini, persentase keusangan turun kembali ke nol.

Dampak pada kueri VECTOR_SEARCH

VECTOR_SEARCH menggunakan status grafik DiskANN saat ini yang dikombinasikan dengan perubahan tertunda yang belum sepenuhnya dimasukkan. Ini berarti:

  • Bahkan ketika keusangan lebih tinggi dari nol, kueri Anda VECTOR_SEARCH masih mengembalikan hasil dan menyertakan baris yang baru dimasukkan atau diperbarui.
  • Namun, algoritma pencarian tidak dapat menggunakan struktur grafik penuh untuk peringkat optimal sampai pemeliharaan latar belakang selesai.
  • Akurasi peringkat mungkin berkurang. Skor dan pengurutan kesamaan mungkin kurang optimal untuk baris yang belum sepenuhnya terintegrasi ke dalam struktur indeks.

Kualitas pencarian adalah yang terbaik ketika semua vektor diintegrasikan dengan benar ke dalam grafik dan persentase keusangan adalah nol.

Menginterpretasikan nilai kedaluarsa

Tidak ada ambang universal untuk keusangan "tinggi" karena tergantung pada pola beban kerja Anda. Gunakan panduan ini untuk menginterpretasikan nilai yang Anda lihat:

  1. Selama beban batch: 20-30% keusangan yang turun mendekati nol dalam hitungan menit diharapkan dan normal.
  2. Selama operasi reguler: 0-5% keusangan menunjukkan pemeliharaan latar belakang mengimbangi beban kerja Anda.

Selidiki kesehatan indeks Anda jika Anda mengalami salah satu skenario berikut:

  • Keusangan tinggi berkelanjutan: Nilai yang konsisten di atas 10-15% selama operasi reguler menyarankan pemeliharaan latar belakang tidak dapat mengikuti laju DML Anda.
  • Pengenalan berkurang: Anda melihat penurunan terukur dalam relevansi VECTOR_SEARCH hasil.
  • Kegagalan tugas: Nilainya last_background_task_succeeded adalah 0. Proses latar belakang mengalami kesalahan dan tidak dapat memperbarui indeks.

Kapan harus membangun kembali indeks vektor

Pertimbangkan untuk membangun kembali indeks vektor saat Anda mengamati performa atau penarikan kembali penurunan, tidak hanya didasarkan pada persentase keusangan. Skenario pembangunan ulang meliputi:

  • Penurunan kualitas pengenalan yang signifikan: Pencarian vektor mengembalikan lebih sedikit hasil yang relevan dari yang diharapkan
  • Penggantian data skala besar: Saat sebagian besar atau semua penyematan diganti (misalnya, penyematan ulang dengan model baru)

Untuk panduan terperinci tentang kualitas data dan skenario pemeliharaan, lihat Panduan kualitas dan pemeliharaan data untuk indeks vektor.

Pantau metrik ini untuk memahami pola pemeliharaan indeks dan mengidentifikasi indeks yang membutuhkan perhatian.

Permissions

Memerlukan izin VIEW DATABASE STATE pada database.

Examples

A. Memantau semua indeks vektor

Kueri berikut memantau semua indeks vektor dalam database saat ini, memperlihatkan status keusangan dan pemeliharaan.

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. Mengidentifikasi indeks yang membutuhkan perhatian

Kueri berikut menemukan indeks vektor dengan keusangan tinggi atau kegagalan pemeliharaan terbaru.

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;