במאמר הזה מוסבר איך לשפר את הביצועים של תוכנית השאילתה באמצעות ניהול תוכנית השאילתה ב-AlloyDB ל-PostgreSQL. הכלי לניהול תוכניות לביצוע שאילתות עוקב באופן רציף אחרי כל התוכניות לביצוע שאילתות וסטטיסטיקות ההרצה שלהן במסד הנתונים. אחרי שבודקים את השאילתות והעלויות שמשויכות אליהן, אפשר לאשר תוכנית שמוחלת באופן עקבי על שאילתה נתונה. הגישה הזו מבטיחה בחירה של תוכנית לביצוע שאילתה חסכונית, שמובילה לשיפור בביצועי השאילתות.
איך זה עובד
ב-PostgreSQL, כלי לאופטימיזציה של שאילתות בוחר תוכנית ביצוע לכל שאילתה על סמך העלויות המשוערות. יש הרבה גורמים שמשפיעים על עלות השאילתה, למשל: הפרמטרים של השאילתה, המורכבות של השאילתה, גודל הטבלה, האינדקסים הזמינים ומשאבי המערכת.
יכול להיות שהפרמטרים של השאילתה ישתנו בכל הרצה של השאילתה, ולכן בחירה דינמית של תוכנית לביצוע שאילתה לא תמיד תניב תוצאות אופטימליות. כשמעבדים שאילתה, הכלי לאופטימיזציה מעריך תוכניות ביצוע שונות ומנסה לבחור את התוכנית הכי משתלמת.
שינוי בפרמטרים יכול להוביל לשינוי בתוכנית. בדרך כלל התוכנית שנבחרת היא האפשרות הכי חסכונית, אבל יכולים להיות מקרים שבהם נבחרת תוכנית פחות חסכונית, וכתוצאה מכך ביצועי השאילתה נמוכים. ניהול תוכניות לביצוע שאילתות עוזר לכם להבין את התבניות והתוכניות שנוצרו על ידי הכלי לאופטימיזציה, ומאפשר לכם לראות כל תוכנית כדי לקבל החלטות מושכלות.
שני הרכיבים העיקריים של ניהול תוכניות לביצוע שאילתות הם:
- מאגר תוכניות לביצוע שאילתות
- כשמפעילים את ניהול תוכניות השאילתות במסד הנתונים, מאגר התוכניות מתחיל לעקוב אחרי תוכניות היסטוריות ונתונים סטטיסטיים של ביצועים במסד הנתונים. מאגר התוכניות לביצוע שאילתות מספק תצפית על הביצועים של התוכניות לביצוע שאילתות.
- ניהול התוכנית
- אחרי שבודקים את התוכניות הזמינות, אפשר להשתמש ברכיב ניהול התוכניות כדי לאשר תוכנית אחת או יותר לתבנית שאילתה ספציפית. הכלי לניהול תוכניות לביצוע שאילתות עוקב אחרי התוכניות שאושרו, ומוודא שכשהשאילתה מופעלת, הכלי לאופטימיזציה של שאילתות משתמש רק באחת מהתוכניות שאושרו. אם אושרו כמה תוכניות, AlloyDB בוחר ומפעיל את התוכנית עם העלות המשוערת הנמוכה ביותר.
לפני שמתחילים
- מגדירים את הדגל לניהול מסד הנתונים
google_plan_management.enabledלערךon. מידע נוסף זמין במאמר הגדרת דגלים לניהול מסדי נתונים. - יוצרים את התוסף
google_plan_managementבמסד הנתונים. מידע נוסף זמין במאמר הפעלת תוסף. צריך להעניק את ההרשאה
google_plan_management_roleלמשתמשים במסד הנתונים שרוצים להשתמש בניהול תוכניות השאילתות ולנהל את תוכניות השאילתות.נכנסים לדף Clusters של AlloyDB במסוף Google Cloud .
לוחצים על המכונה הרצויה.
לוחצים על 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 תוכניות ייחודיות, ואין בו מדיניות שמירת נתונים.