בדף הזה מתואר סינון אדפטיבי ב-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)