במאמרי עזרה זה מוסבר איך לשפר את הביצועים של תוכנית לביצוע שאילתה באמצעות ניהול תוכניות לביצוע שאילתות ב-AlloyDB ל-PostgreSQL. התכונה 'ניהול תוכניות שאילתות' עוקבת באופן רציף אחרי כל תוכניות השאילתות ואחרי נתוני הביצוע שלהן במסד הנתונים. אחרי שבודקים את השאילתות ואת העלויות שמשויכות אליהן, אפשר לאשר תוכנית שתחול באופן עקבי על שאילתה מסוימת. הגישה הזו מבטיחה בחירה של תוכנית לביצוע שאילתה חסכונית, וכך משפרת את ביצועי השאילתות.
איך זה עובד
ב-PostgreSQL, כלי לאופטימיזציה של שאילתות בוחר תוכנית הרצה לכל שאילתה על סמך עלויות משוערות. יש הרבה גורמים שמשפיעים על עלות השאילתה – למשל, פרמטרים של השאילתה, מורכבות השאילתה, גודל הטבלה, אינדקסים זמינים ומשאבי המערכת.
יכול להיות שהפרמטרים של השאילתה ישתנו בכל הרצה של השאילתה, ולכן בחירה דינמית של תוכנית לביצוע שאילתה לא תמיד תניב תוצאות אופטימליות. כשמעבדים שאילתה, הכלי לאופטימיזציה מעריך תוכניות ביצוע שונות ומנסה לבחור את התוכנית הכי חסכונית.
שינוי פרמטר עשוי להוביל לשינוי בתוכנית. למרות שהתוכנית שנבחרה היא בדרך כלל האפשרות הכי חסכונית, יכולים להיות מקרים שבהם נבחרת תוכנית פחות חסכונית, מה שמוביל לביצועים נמוכים של השאילתות. הכלי לניהול תוכניות לביצוע שאילתות עוזר לכם להבין את הדפוסים והתוכניות שנוצרו על ידי האופטימיזציה, ומאפשר לכם להציג כל תוכנית לביצוע שאילתה כדי לקבל החלטות מושכלות.
שני הרכיבים העיקריים של ניהול תוכניות לביצוע שאילתות הם:
- מאגר תוכניות שאילתות
- כשמפעילים את ניהול תוכניות לביצוע שאילתות במסד הנתונים, מאגר התוכניות מתחיל לעקוב אחרי תוכניות היסטוריות וסטטיסטיקות של ביצועים במסד הנתונים. מאגר תוכניות לביצוע שאילתה מספק ניראות (observability) לגבי הביצועים של תוכנית לביצוע שאילתה.
- ניהול תוכניות
- אחרי שבודקים את התוכניות הזמינות, רכיב ניהול התוכניות מאפשר לאשר תוכנית אחת או יותר לתבנית שאילתה ספציפית. ניהול תוכניות לביצוע שאילתה עוקב אחרי התוכניות שאושרו, ומוודא שכשהשאילתה מופעלת בהמשך, האופטימיזציה של השאילתה משתמשת רק באחת מהתוכניות שאושרו. אם אושרו כמה תוכניות, מערכת AlloyDB בוחרת ומפעילה את התוכנית עם העלות המשוערת הכי נמוכה.
לפני שמתחילים
- מגדירים את דגל מסד הנתונים
google_plan_management.enabledלערךon. מידע נוסף זמין במאמר הגדרת דגלים של מסד נתונים. - יוצרים את התוסף
google_plan_managementבמסד הנתונים. מידע נוסף זמין במאמר הפעלת תוסף. נותנים הרשאת
google_plan_management_roleלמשתמשים במסד הנתונים שרוצים להשתמש בניהול תוכניות שאילתות ולנהל תוכניות שאילתות.נכנסים לדף Clusters במסוף Google Cloud של AlloyDB.
לוחצים על המופע הרצוי.
לוחצים על AlloyDB Studio ואז על הכרטיסייה Editor 1.
מזינים את השאילתה הבאה:
GRANT google_plan_management_role TO DATABASE_USER;מחליפים את
DATABASE_USERבמשתמש שרוצים להקצות לו את התפקיד.לוחצים על Run.
צפייה בתוכניות של שאילתות שבמעקב
ניהול תוכניות לביצוע שאילתות מספק תצוגה של תוכניות לביצוע שאילתות שבה מוצגות כל תוכניות לביצוע שאילתות שנמצאות במעקב, זמני ההרצה שלהן ומידע נוסף. תוכנית לביצוע שאילתה שעוקבים אחריה היא תוכנית לביצוע שאילתה שנוצרת על ידי הכלי לאופטימיזציה ונשמרת במאגר התוכניות.
כדי לראות תוכניות היסטוריות שעוקבים אחריהן, מריצים את השאילתה הבאה:
SELECT * FROM google_plan_management.tracked_plans_view;
התגובה לשאילתה תהיה דומה לתגובה הבאה:
db_id | 5
db_name | postgres
user_id | 16392
user_name | postgres
logical_query_id | 15480571796188147798
plan_id | 4740866759615354783
query | SELECT c1, c2, c3 FROM t1 WHERE c1 = 1;
plan | Seq Scan on public.t1 +
| Output: c1, c2, c3 +
| Filter: (t1.c1 = ?)
total_execution_time | 0.003937501
num_executions | 1
creation_time | 2024-11-06 16:52:25.200737+00
last_used_time | 2024-11-06 16:52:25.200737+00
השבתת מעקב אחר תוכנית לביצוע שאילתה
אם אתם לא רוצים שהכלי לניהול תוכניות לביצוע שאילתות יעקוב אחרי תוכניות לביצוע שאילתות שנוצרות על ידי האופטימיזציה, אתם צריכים להשבית את google_plan_management.enable_track_plans דגל לניהול מסד נתונים. ההתראה הזו מופעלת כברירת מחדל, ומומלץ להשאיר אותה מופעלת. מידע נוסף זמין במאמר בנושא הגדרת דגלים של מסד נתונים.
צפייה בתוכניות מנוהלות
אפשר לראות את כל השאילתות ותוכניות לביצוע שאילתה שמנוהלות על ידי הכלי לניהול תוכניות לביצוע שאילתה, כולל תוכניות שאושרו ונדחו.
כדי להציג תוכניות מנוהלות, מריצים את השאילתה הבאה:
SELECT * FROM google_plan_management.managed_plans_view;
התגובה לשאילתה תהיה דומה לתגובה הבאה:
db_id | 5
db_name | postgres
user_id | 16392
user_name | postgres
logical_query_id | 15480571796188147798
plan_id | 4740866759615354783
status | approved
אישור תוכנית
הכלי לאופטימיזציה בוחר תוכנית לביצוע שאילתה באופן דינמי, כלומר יכול להיות שהוא יבחר תוכניות לביצוע שאילתה שונות לאותה שאילתה בזמנים שונים. כדי לאכוף בחירה עקבית של תוכנית לביצוע שאילתה, אפשר להשתמש בניהול תוכניות לביצוע שאילתה כדי לאשר תוכנית לביצוע שאילתה אחת או יותר עבור שאילתה נתונה.
אם מאשרים כמה תוכניות, כלי ניהול התוכניות משווה בין כל התוכניות שאושרו ובוחר את התוכנית הכי חסכונית להרצת השאילתה.
כדי להעריך ולאשר תוכנית לשאילתה, פועלים לפי השלבים הבאים:
צופים בתוכניות המעקב שהאופטימיזציה יצרה ומזהים את הערך של
logical_query_idבתשובה.בודקים את כל התוכניות שנוצרו עבור
logical_query_id. אתם יכולים לחשב את זמן הביצוע הממוצע של כל תוכנית באמצעות הערכיםtotal_execution_timeו-num_executions, ואז להחליט איזו תוכנית הכי מתאימה לשאילתה שלכם.העמודה
planכוללת פרטים נוספים כמו אינדקס שבו נעשה שימוש או שיטת המיון שבה נעשה שימוש, שיכולים לעזור לכם להחליט על תוכנית לביצוע שאילתה.כדי לאשר את התוכנית שרוצים להחיל על השאילתה, מריצים את השאילתה הבאה:
SELECT google_plan_management.approve_plan(QUERY_ID, PLAN_ID);מחליפים את מה שכתוב בשדות הבאים:
-
QUERY_ID:logical_query_idהייחודי של השאילתה. יכול להיות שמזהה שאילתה אחד משויך לכמה מזהי תוכנית. -
PLAN_ID: המזהה הייחודיplan_idשל השאילתה.
-
דחיית תוכנית
אתם יכולים לדחות כל תוכנית לביצוע שאילתה שאושרה לשאילתה ולהפסיק את ניהול תוכניות לביצוע שאילתות כדי שהתוכנית לא תחול על השאילתה. תוכניות שנדחו לא נמחקות, והן זמינות ברשימת התוכניות שבמעקב.
כדי לדחות תוכנית שאושרה, מריצים את השאילתה הבאה:
SELECT google_plan_management.deny_plan(QUERY_ID, PLAN_ID);
מחיקת תוכנית שאושרה
אפשר למחוק תוכנית שאושרה ממאגר התוכניות. כשמוחקים תוכנית שאושרה, היא לא מופיעה יותר ברשימת התוכניות המנוהלות.
כדי למחוק תוכנית שאושרה, מריצים את השאילתה הבאה:
SELECT google_plan_management.update_plan_status(QUERY_ID, PLAN_ID, 'delete');
הפסקה זמנית של השימוש בתוכניות שאושרו
אם רוצים להפסיק באופן זמני את השימוש בתוכניות מאושרות לשאילתות, צריך להשבית את דגל מסד הנתונים google_plan_management.enable_steer_plans.
ההגדרה הזו מופעלת כברירת מחדל. מידע נוסף זמין במאמר הגדרת דגלים של מסד נתונים.
מגבלות
- אי אפשר להשתמש בניהול תוכניות לביצוע שאילתה בטבלאות עם מחיצות או בקבוצות של הגדרות.
- ניהול תוכניות לביצוע שאילתה נתמך רק במופע הראשי.
- מאגר תוכניות לביצוע שאילתה יכול לאחסן עד 100,000 תוכניות ייחודיות, ולא מספק מדיניות שמירה.