pg_stat_ann_indexes שזמינה כשמתקינים את התוסף alloydb_scann.
מידע נוסף על הצגת המדדים זמין במאמר הצגת מדדים של אינדקס וקטורי.
מדדי נוחות שימוש
מדדי השימושיות כוללים מדדים שעוזרים להבין את מצב השימוש באינדקס, כמו הגדרת האינדקס ומספר הסריקות של האינדקס.
| שם המדד | סוג נתונים | תיאור |
|---|---|---|
relid |
OID |
המזהה הייחודי של הטבלה שמכילה את אינדקס הווקטורים |
indexrelid |
OID |
המזהה הייחודי של אינדקס הווקטורים |
schemaname |
NAME |
שם הסכימה שבבעלותה האינדקס |
relname |
NAME |
שם הטבלה שמכילה את האינדקס |
indexrelname |
NAME |
שם האינדקס |
indextype |
NAME |
סוג האינדקס. הערך הזה תמיד מוגדר ל-scann |
indexconfig |
TEXT[] |
הגדרות, כמו ספירת העלים והקוונטיזטור, שהוגדרו לאינדקס כשהוא נוצר |
indexsize |
TEXT |
גודל האינדקס |
indexscan |
BIGINT |
מספר סריקות האינדקס שהתחילו באינדקס |
partitioncount |
BIGINT |
מספר המחיצות (צמתי עלים) בעץ. |
מדדי כוונון
מדדי הכוונון מספקים תובנות לגבי האופטימיזציה הנוכחית של האינדקס, ומאפשרים לכם ליישם המלצות לביצועים מהירים יותר של שאילתות.
| שם המדד | סוג נתונים | תיאור |
|---|---|---|
insertcount |
BIGINT |
מספר פעולות ההוספה באינדקס. המדד הזה כולל גם את מספר השורות שהיו קיימות לפני יצירת האינדקס. |
updatecount |
BIGINT |
מספר פעולות העדכון באינדקס. המדד הזה לא מביא בחשבון עדכוני HOT. |
deletecount |
BIGINT |
מספר פעולות המחיקה באינדקס. |
distribution |
JSONB |
התפלגות הווקטורים בכל המחיצות של האינדקס. ההתפלגות מוצגת בשדות הבאים:
הערה: בגלל המאפיינים המובְנים של אלגוריתם האשכולות K-means, תמיד תהיה מידה מסוימת של שונות בהתפלגות הווקטורים בין המחיצות, גם כשהאינדקס נוצר בהתחלה. |
distributionpercentile |
JSONB |
התפלגות אינדקס הווקטורים עוזרת להבין את התפלגות הווקטורים בין המחיצות של אינדקס ScaNN. המחיצות נוצרות על סמך ערך num_leaves שמוגדר במהלך יצירת האינדקס.החלוקה של אינדקס הווקטורים כוללת קטגוריות של אחוזונים: 10, 25, 50, 75, 90, 95, 99 ו-100. כל דלי מכיל את הערכים הבאים:
הערה: בגלל המאפיינים המובְנים של אלגוריתם האשכולות K-means, תמיד יש מידה מסוימת של שונות בהתפלגות הווקטורים בין המחיצות, גם כשהאינדקס נוצר בהתחלה. |
המלצות לכוונון על סמך המדדים
- מוטציה
- המדדים
insertcount,updatecount,deletecountמציגים יחד את השינויים או המוטציות בווקטור של האינדקס. - האינדקס נוצר עם מספר מסוים של וקטורים ומחיצות. כשמבצעים פעולות כמו הוספה, עדכון או מחיקה באינדקס הווקטורי, הן משפיעות רק על קבוצת המחיצות הראשונית שבה נמצאים הווקטורים. כתוצאה מכך, מספר הווקטורים בכל מחיצה משתנה לאורך זמן, ויכול להיות שתהיה לכך השפעה על ההחזרה, על QPS או על שניהם.
- אם אתם נתקלים באיטיות או בבעיות דיוק, כמו מספר נמוך של QPS או recall נמוך, בשאילתות החיפוש של ANN לאורך זמן, כדאי לבדוק את המדדים האלה. מספר גבוה של מוטציות ביחס למספר הכולל של הווקטורים יכול להצביע על הצורך ביצירת אינדקס מחדש.
- הפצה
- המדד
distributionמציג את התפלגות הווקטורים בכל המחיצות. - כשיוצרים אינדקס, הוא נוצר עם מספר ספציפי של וקטורים ומחיצות קבועות. תהליך החלוקה וההפצה שמתבצעת לאחר מכן מתבססים על השיקול הזה. אם מוסיפים עוד וקטורים, הם מחולקים בין המחיצות הקיימות, וכתוצאה מכך מתקבלת חלוקה שונה בהשוואה לחלוקה שהתקבלה כשנוצר האינדקס. מכיוון שההפצה הסופית לא מתייחסת לכל הווקטורים בו-זמנית, יכול להיות שהיא תשפיע על ה-recall, על ה-QPS או על שניהם.
- אם אתם מבחינים בירידה הדרגתית בביצועים של שאילתות החיפוש של ה-ANN, כמו זמני תגובה איטיים יותר או דיוק מופחת בתוצאות (שנמדד על ידי QPS או recall), כדאי לבדוק את המדד הזה ולבצע אינדוקס מחדש.
- אחוזון ההתפלגות
- המדד
distributionpercentileהוא התפלגות של אינדקס וקטורים בתצוגהpg_stat_ann_indexes, שעוזרת להבין את התפלגות הווקטורים בין המחיצות של אינדקס ScaNN. המחיצות נוצרות על סמך הערך שלnum_leavesשמוגדר במהלך יצירת האינדקס. - כשיוצרים
alloydb_scannאינדקס על קבוצת השורות הראשונית על ידי הגדרתnum_leaves, האינדקס יכול לשנות את חלוקת הווקטורים בין המחיצות בגלל פעולות על הנתונים (שינויים בהטיה), או שמספר הווקטורים עשוי לגדול באופן משמעותי. השינויים האלה עלולים להוביל לירידה ב-QPS, בזיכרון או בשניהם. התפלגות האינדקס של הווקטורים יכולה לספק לכם אותות אם המוטציה גורמת לשינוי בהתפלגות האינדקס. המידע הזה יכול לעזור לכם להחליט אם צריך ליצור אינדקס מחדש, או אם שינוי בהגדרות של זמן החיפוש יכול לשפר את הביצועים של השאילתות. - באינדקס וקטורי, התפלגות הווקטורים בין המחיצות היא בדרך כלל לא אחידה לחלוטין. חוסר איזון כזה נקרא חלוקה לא אחידה. בדרך כלל צפויה מידה מסוימת של חוסר אחידות, וזה לא אומר שצריך להוסיף את הדפים לאינדקס מחדש. להתפלגות לא אחידה יש את המאפיינים הבאים:
- השונות של מספר הווקטורים נמוכה. השונות יכולה להיות מחושבת כ
$(P100(num\_vectors) - p10(num\_vectors))*(\frac{num\_leaves}{total\_num\_row})$ - מספר המחיצות עם 0 וקטורים נמוך, ויכול להיות שהוא פחות מ-30% מהמחיצות.
- השונות של מספר המחיצות נמוכה.
$ variance _{p} = abs(p_{num\_partitions} - num\_leaves * (p_{percentile} - p-1_{percentile})) $ כאשר "p" הוא קטגוריית התפלגות של אינדקס וקטורי. - מספר הווקטורים בכל אחוזון הוא
$< 8 x (\frac{num\_rows\ during\ index\ creation\ time}{ num\_leaves})$
אם התנאים האלה לא מתקיימים, יכול להיות שיידרשREINDEX, בהתאם למידת ההשפעה על ה-QPS והאחזור.
- השונות של מספר הווקטורים נמוכה. השונות יכולה להיות מחושבת כ
- התרחישים הבאים פחות נפוצים מהתפלגות לא אחידה, אבל הם יכולים לקרות:
- אינדקס אחיד משוער: כשברוב המחיצות יש אותו מספר של וקטורים שאינם אפס, והשונות של מספר הווקטורים נמוכה, זהו אינדקס אחיד משוער.
REINDEXהוא מאפיין חובה אם וקטורי המספרים בכל מחיצה גדולים מ-8 כפול וקטור הממוצע ב-index_creation_time. - אינדקס דליל: אינדקס דליל מתרחש גם במקרים שבהם יותר מ-50% מהמחיצות ריקות. לדוגמה, אינדקס דליל נוצר כשמתבצעות כמה מחיקות בטבלה. במקרה כזה, הווקטורים ירוכזו במספר קטן של מחיצות, מה שיגדיל את מספר הווקטורים בכל מחיצה. במקרה כזה, צריך למחוק את האינדקס וליצור אותו מחדש.
- אינדקס אחיד משוער: כשברוב המחיצות יש אותו מספר של וקטורים שאינם אפס, והשונות של מספר הווקטורים נמוכה, זהו אינדקס אחיד משוער.