בדף הזה מוסבר על סינון אדפטיבי ב-AlloyDB Omni.
סינון אדפטיבי מנתח דפוסי שאילתות והתפלגויות נתונים במהלך ביצוע השאילתה כדי לבחור באופן דינמי את אסטרטגיית הסינון היעילה ביותר, כמו סינון מוטבע או סינון מראש.
הכלי לאופטימיזציה של שאילתות ב-AlloyDB Omni משתמש בניתוח מבוסס-עלות כדי לקבוע אם סינון מוטבע או סינון מראש מספק את הביצועים הטובים ביותר בכל נקודה נתונה במהלך ביצוע השאילתה.
האופטימיזציה הזו מועילה לחיפושי וקטורים מסוננים ב-AlloyDB Omni, שבהם סינון אדפטיבי עובר אוטומטית בין שימוש בווקטור לבין שימוש באינדקס מטא-נתונים כדי להבטיח תוצאות יעילות ומדויקות בלי התערבות ידנית.
הפעלת סינון דינמי
כדי להפעיל סינון אדפטיבי, משתמשים בדגל scann.enable_preview_features.
כשהסינון הדינמי מפעיל מעבר מסינון מוטבע לסינון מוקדם במהלך הביצוע, תוכנית השאילתה משתנה באופן דינמי.
לדוגמה, התוכנית יכולה להציג Bitmap assisted pre-filtering בשדה Execution Strategy (אסטרטגיית ביצוע) כשהכלי לאופטימיזציה קובע שסינון מראש יעיל יותר בשלב הזה של השאילתה. השינוי הדינמי הזה מתרחש כשהמערכת מסתגלת לנתונים בפועל שהיא נתקלת בהם במהלך הביצוע של השאילתה.
Limit (actual rows=10 loops=1)
-> Custom Scan (vector scan) on t1 (actual rows=10 loops=1)
Execution Strategy: Bitmap assisted pre-filtering
Order By: (vec_col <=> '[...]'::vector)
Limit: 10
Num Requalifications: 0
Num filtered: 1000
-> Bitmap Index Scan on btree_idx (actual rows=10000 loops=1)
Index Cond: (int_col <= 100000000)