pg_stat_ann_indexes
yang tersedia saat Anda menginstal ekstensi alloydb_scann
.
Untuk mengetahui informasi selengkapnya tentang cara melihat metrik, lihat Melihat metrik indeks vektor.
Metrik kegunaan
Metrik kegunaan mencakup metrik yang membantu Anda memahami status pemanfaatan indeks dengan metrik, seperti konfigurasi indeks dan jumlah pemindaian indeks.
Nama metrik | Jenis data | Deskripsi |
---|---|---|
relid |
OID |
ID unik tabel yang berisi indeks vektor |
indexrelid |
OID |
ID unik indeks vektor |
schemaname |
NAME |
Nama skema yang memiliki indeks |
relname |
NAME |
Nama tabel yang berisi indeks |
indexrelname |
NAME |
Nama indeks |
indextype |
NAME |
Jenis indeks. Nilai ini selalu ditetapkan ke scann |
indexconfig |
TEXT[] |
Konfigurasi, seperti jumlah daun dan penguantisasi, yang ditentukan untuk indeks saat dibuat |
indexsize |
TEXT |
Ukuran indeks |
indexscan |
BIGINT |
Jumlah pemindaian indeks yang dimulai pada indeks |
partitioncount |
BIGINT |
Jumlah partisi (node daun) dalam hierarki. |
Metrik penyesuaian
Metrik penyesuaian memberikan insight tentang pengoptimalan indeks saat ini, sehingga Anda dapat menerapkan rekomendasi untuk performa kueri yang lebih cepat.
Nama metrik | Jenis data | Deskripsi |
---|---|---|
insertcount |
BIGINT |
Jumlah operasi penyisipan pada indeks. Metrik ini juga mencakup jumlah baris yang ada sebelum indeks dibuat. |
updatecount |
BIGINT |
Jumlah operasi update pada indeks. Metrik ini tidak memperhitungkan update HOT apa pun. |
deletecount |
BIGINT |
Jumlah operasi penghapusan pada indeks. |
distribution |
JSONB |
Distribusi vektor di semua partisi untuk indeks. Kolom berikut menunjukkan distribusi:
Catatan: Karena karakteristik inheren algoritma pengelompokan K-means, akan selalu ada beberapa tingkat varians dalam distribusi vektor di seluruh partisi, bahkan saat indeks dibuat pertama kali. |
distributionpercentile |
JSONB |
Distribusi indeks vektor membantu Anda memahami distribusi vektor di antara partisi indeks ScaNN. Partisi dibuat berdasarkan nilai num_leaves yang ditentukan selama pembuatan indeks.Distribusi indeks vektor berisi bucket untuk persentil ke-10, 25, 50, 75, 90, 95, 99, dan ke-100. Setiap bucket berisi nilai berikut:
Catatan: Karena karakteristik inheren algoritma pengelompokan K-means, selalu ada beberapa tingkat varians dalam distribusi vektor di seluruh partisi, bahkan saat indeks dibuat pertama kali. |
Rekomendasi penyesuaian berdasarkan metrik
- Mutasi
- Metrik
insertcount
,updatecount
, dandeletecount
secara bersamaan menunjukkan perubahan atau mutasi dalam vektor untuk indeks. - Indeks dibuat dengan jumlah vektor dan partisi tertentu. Saat operasi seperti penyisipan, pembaruan, atau penghapusan dilakukan pada indeks vektor, operasi tersebut hanya memengaruhi kumpulan partisi awal tempat vektor berada. Akibatnya, jumlah vektor di setiap partisi berfluktuasi dari waktu ke waktu, yang berpotensi memengaruhi perolehan, QPS, atau keduanya.
- Jika Anda mengalami masalah kelambatan atau akurasi seperti QPS rendah atau recall buruk, dalam kueri penelusuran ANN Anda dari waktu ke waktu, pertimbangkan untuk meninjau metrik ini. Jumlah mutasi yang tinggi dibandingkan dengan jumlah total vektor dapat menunjukkan perlunya pengindeksan ulang.
- Distribusi
- Metrik
distribution
menampilkan distribusi vektor di semua partisi. - Saat Anda membuat indeks, indeks tersebut dibuat dengan jumlah vektor tertentu dan partisi tetap. Proses partisi dan distribusi berikutnya terjadi berdasarkan pertimbangan ini. Jika vektor tambahan ditambahkan, vektor tersebut akan dipartisi di antara partisi yang ada, sehingga menghasilkan distribusi yang berbeda dibandingkan dengan distribusi saat indeks dibuat. Karena distribusi akhir tidak mempertimbangkan semua vektor secara bersamaan, recall, QPS, atau keduanya mungkin terpengaruh.
- Jika Anda mengamati penurunan bertahap dalam performa kueri penelusuran ANN, seperti waktu respons yang lebih lambat atau akurasi hasil yang berkurang (diukur dengan QPS atau perolehan), pertimbangkan untuk memeriksa metrik ini dan mengindeks ulang.
- Persentil distribusi
- Metrik
distributionpercentile
adalah distribusi indeks vektor dalam tampilanpg_stat_ann_indexes
yang membantu Anda memahami distribusi vektor di antara partisi indeks ScaNN. Partisi dibuat berdasarkan nilainum_leaves
yang ditentukan selama pembuatan indeks. - Saat Anda membuat indeks
alloydb_scann
pada kumpulan baris awal dengan menetapkannum_leaves
, indeks dapat mengubah distribusi vektor di seluruh partisi karena operasi data (mutasi kecondongan), atau jumlah vektor dapat meningkat secara signifikan. Perubahan ini dapat menyebabkan penurunan QPS, perolehan, atau keduanya. Distribusi indeks vektor dapat memberi Anda sinyal jika mutasi menyebabkan perubahan dalam distribusi indeks. Informasi ini dapat membantu Anda menentukan apakah pengindeksan ulang diperlukan, atau apakah perubahan pada konfigurasi waktu penelusuran dapat membantu meningkatkan performa kueri. - Dalam indeks vektor, distribusi vektor di seluruh partisi jarang sekali merata sempurna. Ketidakseimbangan tersebut disebut sebagai distribusi tidak seragam. Tingkat ketidakseragaman tertentu sering kali diharapkan dan tidak berarti Anda perlu mengindeks ulang. Distribusi non-seragam memiliki karakteristik berikut:
- Varians jumlah vektor rendah. Varians dapat dihitung sebagai
$(P100(num\_vectors) - p10(num\_vectors))*(\frac{num\_leaves}{total\_num\_row})$ - Jumlah partisi dengan 0 vektor rendah, dan mungkin kurang dari 30% partisi.
- Variansi jumlah partisi rendah.
$ variance _{p} = abs(p_{num\_partitions} - num\_leaves * (p_{percentile} - p-1_{percentile})) $ di mana "p" adalah bucket distribusi indeks vektor. - Jumlah vektor pada persentil apa pun adalah
$< 8 x (\frac{num\_rows\ during\ index\ creation\ time}{ num\_leaves})$
Jika kondisi ini tidak terpenuhi,REINDEX
mungkin diperlukan berdasarkan seberapa besar QPS dan perolehan terpengaruh.
- Varians jumlah vektor rendah. Varians dapat dihitung sebagai
- Skenario berikut, meskipun kurang umum daripada distribusi tidak seragam, dapat terjadi:
- Indeks Seragam Perkiraan: Jika sebagian besar partisi memiliki jumlah vektor bukan nol yang sama dan varians jumlah vektor rendah, maka ini adalah indeks seragam perkiraan.
REINDEX
diperlukan jika jumlah vektor dalam setiap partisi adalah $> 8 * vektor rata-rata$ padaindex_creation_time
. - Indeks Sparse: Indeks sparse juga terjadi jika > 50% partisi kosong. Misalnya, indeks jarang dibuat saat beberapa penghapusan terjadi pada tabel. Skenario ini menyebabkan vektor terkonsentrasi dalam sejumlah kecil partisi, yang meningkatkan jumlah vektor di setiap partisi. Jika hal ini terjadi, hapus indeks dan buat ulang.
- Indeks Seragam Perkiraan: Jika sebagian besar partisi memiliki jumlah vektor bukan nol yang sama dan varians jumlah vektor rendah, maka ini adalah indeks seragam perkiraan.