בדף הזה מתועד השימוש במטמון במהלך סריקות של האינדקס. כשהתכונה הזו מופעלת, הכלי לתכנון שאילתות ב-AlloyDB ל-PostgreSQL מתאים את עלות הקלט/פלט המשוערת של סריקות אינדקס על סמך מספר דפי האינדקס והטבלה שכבר זמינים במאגר המשותף כשהביצוע מתחיל. לאחר מכן נבחר תוכנית השאילתה הסופית על סמך העלויות המותאמות של התוכנית. כך משפרים את ביצועי השאילתות ומפחיתים את עלויות מסד הנתונים.
אחרי שמפעילים את התכונה, היא פועלת באופן אוטומטי ומתאימה את עצמה לשינויים בסטטוס של ההגעה למאגר המשותף. בנוסף, אפשר להשתמש בשיטה הזו יחד עם שיטות אחרות לשיפור ביצועי השאילתות, כמו הגדרת אומדן העלות של מתכנן השאילתות ב-AlloyDB ל-random_page_cost.
הפעלת מודעות למטמון
כדי להפעיל את ההגדרה 'מודעות למטמון' במופע AlloyDB, מגדירים את הדגל alloydb.enable_cache_aware_costing (תצוגה מקדימה) לערך on. בנוסף, אפשר להגדיר את הדגל ברמת הסשן כדי להשפיע על תוכניות השאילתות שמתרחשות באותו סשן. במאמר הגדרת דגלים של מסד נתונים במופע מוסבר איך מגדירים את הדגל.
דוגמה לתרחיש
בדוגמת הקוד הבאה מוצג תוכנית לסריקת אינדקס שמופעלת עם מטמון מאגר משותף שחומם במלואו.
explain (analyze, verbose, buffers)
SELECT count(d) FROM t1 WHERE a = 10 AND b > 100 AND c > 100;
------------------ Aggregate (cost=3908.93..3908.94 rows=1 width=8) (actual time=4.128..4.130 rows=1 loops=1)
Output: count(d)
Buffers: shared hit=926
-> Index Scan using idx1 on public.t1 (cost=0.43..3906.49 rows=975 width=2) (actual time=0.143..3.205 rows=919 loops=1)
Output: a, b, c, d
Index Cond: ((t1.a = 10) AND (t1.b > 100) AND (t1.c > 100))
Buffers: shared hit=926
Execution Time: 4.353 ms
במהלך הביצוע הזה, לא היו קריאות של קלט/פלט. בלי מודעות למטמון, הכלי לתכנון שאילתות כולל עלות קלט/פלט לתוכנית השאילתות של סריקת האינדקס. כתוצאה מכך, תוכנית השאילתות של סריקת האינדקס עלולה להיות פחות יעילה מתוכנית השאילתות של סריקה רציפה.
בקטע הקוד הבא מוצגת העלות המותאמת של תוכנית השאילתה כשהאפשרות 'מודעות למטמון' מופעלת.
explain (verbose)
SELECT count(d) FROM t1 WHERE a = 10 AND b > 100 AND c > 100;
------------------ Aggregate (cost=29.93..29.94 rows=1 width=8)
Output: count(d)
-> Index Scan using idx1 on public.t1 (cost=0.43..27.49 rows=975 width=2)
Output: a, b, c, d
Index Cond: ((t1.a = 10) AND (t1.b > 100) AND (t1.c > 100))
העלות החדשה, 27.49, של תוכנית השאילתה לסריקת האינדקס זהה לעלות הישנה, 3906.49.