שימוש בתובנות לגבי שאילתות כדי לשפר את ביצועי השאילתות

בדף הזה מוסבר איך להשתמש בלוח הבקרה של Query Insights כדי לזהות ולנתח בעיות בביצועים של השאילתות.

מבוא

בעזרת Query Insights אתם יכולים לזהות, לאבחן ולמנוע בעיות בביצועי השאילתות במסדי נתונים של Cloud SQL. הוא תומך במעקב אינטואיטיבי ומספק מידע לאבחון שעוזר לכם לזהות את שורש הבעיה בביצועים, ולא רק לגלות אותה.

בעזרת תובנות לגבי שאילתות, אתם יכולים לעקוב אחרי הביצועים ברמת האפליקציה ולזהות את המקור של שאילתה בעייתית במקבץ האפליקציה לפי מודל, תצוגה, בקר, נתיב, משתמש ומארח. הכלי Query Insights יכול להשתלב עם הכלים והשירותים הקיימים שלכם לניטור אפליקציות (APM) באמצעות תקנים פתוחים וממשקי API. Google Cloudכך תוכלו לעקוב אחרי בעיות בשאילתות ולפתור אותן באמצעות הכלי המועדף עליכם.

הכלי Query Insights עוזר לשפר את הביצועים של שאילתות ב-Cloud SQL באמצעות השלבים הבאים:

תובנות לגבי שאילתות ב-Cloud SQL Enterprise Plus

אם אתם משתמשים במהדורת Cloud SQL Enterprise Plus, אתם יכולים לגשת ליכולות נוספות ב-Query Insights כדי לבצע אבחון מתקדם של ביצועי השאילתות. בנוסף ליכולות הרגילות של לוח הבקרה של Query Insights, ב-Query Insights למהדורת Cloud SQL Enterprise Plus אפשר:

  • תיעוד וניתוח של אירועי המתנה לכל השאילתות שבוצעו.
  • לסנן את העומס המצטבר על מסד הנתונים לפי מאפיינים נוספים, כמו שאילתות, תגים, סוגי אירועי המתנה ועוד.
  • תיעוד של תוכניות לביצוע שאילתות לכל השאילתות שהופעלו.
  • דגימה של עד 200 תוכניות לביצוע שאילתות בדקה.
  • לתעד טקסט ארוך יותר של שאילתות, עד 1MB.
  • לקבל עדכונים על מדדים כמעט בזמן אמת (תוך כמה שניות).
  • לשמור את המדדים למשך 30 ימים.
  • לקבל המלצות לאינדקסים מהכלי Index advisor.
  • לסיים סשן או עסקה ארוכה בשאילתות פעילות.
  • גישה לפתרון בעיות בעזרת AI (גרסת טרום-השקה (Preview)).

בטבלה הבאה מוצגת השוואה בין הדרישות הפונקציונליות והיכולות של תובנות לגבי שאילתות ב-Cloud SQL Enterprise Edition לבין תובנות לגבי שאילתות ב-Cloud SQL Enterprise Plus Edition.

אזור ההשוואה תובנות לגבי שאילתות ב-Cloud SQL מהדורת Enterprise תובנות לגבי שאילתות ב-Cloud SQL Enterprise Plus
גרסאות נתמכות של מסדי נתונים ‫MySQL 5.7 ואילך ‫MySQL מגרסה 8.0 ואילך
סוגי מכונות נתמכים נתמך בכל סוגי המכונות לא נתמך במכונות עם ליבה משותפת (shared-core)
אזורים נתמכים מיקומים אזוריים של Cloud SQL מיקומים אזוריים של Cloud SQL Enterprise Plus edition
תקופת השמירה של המדדים 7 ימים 30 ימים
אורך מקסימלי של שאילתה ‫4,500 בייטים ‫1MB
המספר המקסימלי של דגימות בתוכנית לביצוע שאילתה 20 200
ניתוח אירועי המתנה לא זמין זמינות
המלצות של Index advisor לא זמין זמינות
סיום סשנים או טרנזקציות ארוכות בשאילתות פעילות לא זמין זמינות
פתרון בעיות בעזרת AI (גרסת טרום-השקה (Preview)) לא זמין זמינות
מגבלות עוצמה (cardinality) בשאילתות דיווח על הנתונים הסטטיסטיים המצטברים של עד 100 השאילתות המובילות, עם שילוב של כתובות IP של לקוחות, מסדי נתונים, תגי אפליקציות, שמות משתמשים וטקסט של שאילתות ליום. מדווח על הנתונים הסטטיסטיים המצטברים של עד 4,000 השאילתות המובילות, עם שילוב של כתובות ה-IP של הלקוחות, מסדי נתונים, שמות משתמשים ומזהי שאילתות לדקה.

הפעלת תובנות לגבי שאילתות במהדורת Cloud SQL Enterprise Plus

כדי להפעיל את תובנות השאילתות במהדורת Cloud SQL Enterprise Plus, בוחרים באפשרות Enable Enterprise Plus features כשמפעילים את תובנות השאילתות במכונה של מהדורת Cloud SQL Enterprise Plus.

תמחור

אין עלות נוספת לשימוש ב-Query Insights במכונות של Cloud SQL מהדורות Enterprise ו-Enterprise Plus.

דרישות לגבי האחסון

התובנות לגבי שאילתות ב-Cloud SQL מהדורת Enterprise לא תופסות מקום באחסון של המכונה ב-Cloud SQL. המדדים מאוחסנים ב-Cloud Monitoring. למידע על בקשות API, ראו התמחור של Cloud Monitoring. ל-Cloud Monitoring יש רמה שבה אפשר להשתמש ללא עלות נוספת.

התכונה "תובנות לגבי שאילתות" במהדורת Cloud SQL Enterprise Plus שומרת את נתוני המדדים באותו דיסק שמחובר למכונה של Cloud SQL, ומחייבת להשאיר את ההגדרה "הגדלה אוטומטית של נפח האחסון" מופעלת.

נפח האחסון הנדרש לנתונים של שבעה ימים הוא כ-45GB. למשך 30 ימים, צריך בערך 180GB. התכונה Query Insights במהדורת Cloud SQL Enterprise Plus משתמשת בזיכרון RAM בנפח של עד 130MB. המדדים אמורים להיות זמינים בתובנות לגבי שאילתות תוך דקה מסיום השאילתה. בכפוף לעמלות האחסון הרלוונטיות.

מגבלות

המגבלות הבאות חלות על תובנות לגבי שאילתות במכונות של Cloud SQL Enterprise Plus מהדורת Plus:

  • אם המכונה שלכם נמצאת תחת עומס מערכת כבד, יכול להיות שהשאילתות שלכם ייטענו לאט או יסתיימו עקב זמן קצוב לתפוגה כשתשלחו שאילתות לנתוני מדדים במרכז הבקרה תובנות לגבי שאילתות.
  • אם יוצרים מחדש עותק לקריאה בלבד, היסטוריית המדדים הקודמת שלו לא נשמרת.
  • כשמשחזרים מגיבוי ישן יותר מכונה של Query Insights ל-Cloud SQL Enterprise Plus מהדורת Plus, יכול להיות שהמדדים שנאספו בין מועד הגיבוי למועד שחזור המכונה יאבדו. לדוגמה, אם משחזרים את המכונה ב-30 באפריל באמצעות גיבוי שנוצר ב-25 באפריל, יכול להיות שכל המדדים בין 25 באפריל ל-30 באפריל יאבדו.

לפני שמתחילים

לפני שמשתמשים בתובנות לגבי שאילתות, צריך לבצע את הפעולות הבאות.

  1. מוסיפים את התפקידים וההרשאות הנדרשים.
  2. מפעילים את Cloud Trace API.
  3. אם אתם משתמשים בתובנות לגבי שאילתות במהדורת Cloud SQL Enterprise Plus, ודאו שהאפשרות Enable automatic storage increases מופעלת במכונה.

תפקידים והרשאות נדרשים

כדי לקבל את ההרשאות שנדרשות לגישה לנתונים היסטוריים של הרצת שאילתות בלוח הבקרה של Query Insights, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט שמארח את המכונה של Cloud SQL:

להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.

הפעלת Cloud Trace API

כדי לראות את התוכניות לביצוע שאילתות ואת התצוגות שלהן מקצה לקצה, צריך להפעיל את Cloud Trace API בפרויקט ב- Google Cloud . ההגדרה הזו מאפשרת לפרויקט ב-Google Cloud לקבל נתוני מעקב ממקורות מאומתים ללא עלות נוספת. הנתונים האלה יכולים לעזור לכם לזהות ולאבחן בעיות בביצועים במכונה.

כדי לוודא ש-Cloud Trace API מופעל:

  1. במסוף Google Cloud , נכנסים אל APIs and Services:

    כניסה אל APIs and Services

  2. לוחצים על Enable APIs and Services.
  3. בשורת החיפוש, מקלידים Cloud Trace API.
  4. אם מוצג הכיתוב API enabled, סימן שה-API מופעל ואין צורך לעשות דבר. אחרת, לוחצים על Enable.

הפעלת הגדלה אוטומטית של נפח האחסון

אם אתם משתמשים בתובנות לגבי שאילתות במהדורת Cloud SQL Enterprise Plus, ודאו שההגדרה Enable automatic storage increases נשארת מופעלת במכונה. כברירת מחדל, האפשרות הזו מופעלת במכונות של Cloud SQL.

אם השבתתם בעבר את ההגדרה הזו במכונה ואתם רוצים להפעיל את Query Insights במהדורת Cloud SQL Enterprise Plus, קודם תצטרכו להפעיל מחדש את ההגדרה של הגדלת נפח האחסון באופן אוטומטי. במהדורת Cloud SQL Enterprise Plus אי אפשר להשבית את ההגדלה האוטומטית של נפח האחסון ולהפעיל את Query Insights.

הפעלת תובנות לגבי שאילתות

לפני שמפעילים את תובנות השאילתות, חשוב לשים לב לדרישות הבאות לגבי הפעלה מחדש:

  • אם המכונה פועלת עם גרסת התחזוקה 20251004.01_RC06 של MySQL או גרסה קודמת, ואתם מפעילים את Query Insights למהדורת Cloud SQL Enterprise Plus, המכונה תופעל מחדש. יכול להיות שיעברו כמה דקות עד שהמכונה תהיה זמינה שוב. כתוצאה מכך, כל הפעולות האחרות מושעות באופן זמני, כולל:

    • בדיקות תקינות
    • רישום ביומן
    • מעקב
    • פעולות אחרות במכונות
  • אם במכונה פועלת גרסת התחזוקה 20251004.01_RC07 של MySQL או גרסה מאוחרת יותר, ואתם מפעילים את תובנות לגבי שאילתות, לא צריך להפעיל מחדש את המכונה והפעולות שלה נשארות זמינות.

המסוף

הפעלת תובנות לגבי שאילתות במכונה

  1. נכנסים לדף Cloud SQL Instances במסוף Google Cloud .

    כניסה לדף Cloud SQL Instances

  2. כדי לפתוח את הדף Overview של מכונה, לוחצים על שם המכונה.
  3. במשבצת Configuration (הגדרה), לוחצים על Edit configuration (עריכת ההגדרה).
  4. בקטע Customize your instance, מרחיבים את Query insights.
  5. מסמנים את התיבה Enable Query insights.
  6. אופציונלי: בוחרים תכונות נוספות למכונה. חלק מהתכונות זמינות רק במהדורת Cloud SQL Enterprise Plus.
  7. תכונה תיאור Cloud SQL מהדורת Enterprise מהדורת Cloud SQL Enterprise Plus
    לכידת ביצועים סמנו את תיבת הסימון הזו כדי להפעיל את תיעוד הביצועים, שיוצר תמונת מצב של מסד הנתונים כשמזוהות בעיות בביצועים על סמך טריגרים מבוססי-סף שאפשר להגדיר. אפשר להשתמש בכלי לתיעוד הביצועים כדי ליצור תמונת מצב של כל המערכת, אם המדדים הרגילים לא מספיקים. אפשר גם להשתמש בתיעוד הביצועים כדי לסיים באופן אוטומטי טרנזקציות שנמשכות זמן רב. מידע נוסף מופיע במאמר סקירה כללית על תיעוד הביצועים ב-Cloud SQL. זמין

    ברירת מחדל: מופעל עם תובנות לגבי שאילתות, אבל אפשר להשבית בנפרד
    זמין

    ברירת מחדל: מופעל עם תובנות לגבי שאילתות, אבל אפשר להשבית בנפרד
    הפעלת התכונות של Enterprise Plus כדי להפעיל את Query Insights במהדורת Cloud SQL Enterprise Plus, מסמנים את התיבה הזו. ב-Query Insights למהדורת Cloud SQL Enterprise Plus אפשר לסיים סשנים וטרנזקציות ארוכות בשאילתות פעילות, לקבל המלצות מ-Index Advisor כדי לעזור לכם להאיץ את עיבוד השאילתות, ולהגדיל את שמירת נתוני המדדים ל-30 יום. ההמלצות של Index advisor מופעלות באופן אוטומטי כשמפעילים את Query Insights במהדורת Cloud SQL Enterprise Plus. כדי להשבית את ההמלצות של Index advisor, מבטלים את הסימון בתיבה הזו. כדי להפעיל את ההמלצות של Index Advisor ואת פתרון הבעיות בעזרת AI (גרסת טרום-השקה (Preview)), צריך לסמן את התיבה הזו. לא זמין זמינות

    ברירת מחדל: מושבתת
    פתרון בעיות בעזרת AI מסמנים את התיבה הזו כדי להפעיל זיהוי אנומליות בביצועים, ניתוח של שורש הבעיה וניתוח מצב, ולקבל המלצות לפתרון בעיות בשאילתות ובמסד הנתונים. התכונה הזו נמצאת בגרסת טרום-השקה (Preview), ואפשר להפעיל אותה ולגשת אליה רק באמצעות מסוף Google Cloud . מידע נוסף מופיע במאמר תצפית ופתרון בעיות בעזרת AI. לא זמין זמינות

    ברירת מחדל: מושבתת
    שמירת כתובות ה-IP של הלקוחות מסמנים את התיבה הזו כדי לאפשר אחסון של כתובות ה-IP של הלקוחות. ב-Cloud SQL אפשר לאחסן את כתובות ה-IP שמהן מגיעות השאילתות, ולקבץ את הנתונים האלה כדי להריץ עליהם מדדים. השאילתות מגיעות מיותר ממארח אחד. כדי לזהות את מקור הבעיה, כדאי לבדוק את התרשימים של השאילתות מכתובות ה-IP של הלקוחות. זמינות

    ברירת מחדל: מושבתת
    זמינות

    ברירת מחדל: מושבתת
    תגי אפליקציה בחנות כדי להפעיל את האחסון של תגי האפליקציה, מסמנים את התיבה הזו. אחסון תגי אפליקציות עוזר לכם לקבוע אילו ממשקי API ונתיבי MVC (מודל-תצוגה-בקרה) שולחים בקשות, ולקבץ את הנתונים כדי להריץ עליהם מדדים. כדי להשתמש באפשרות הזו, צריך להוסיף הערות לשאילתות עם קבוצה ספציפית של תגים באמצעות ספריית הכלים האוטומטיים של מיפוי אובייקטים יחסי (ORM) בקוד פתוח sqlcommenter. המידע הזה עוזר לתובנות לגבי שאילתות לזהות את מקור הבעיה ואת ה-MVC שממנו הבעיה מגיעה. נתיבי האפליקציות עוזרים לכם לעקוב אחרי האפליקציות. זמינות

    ברירת מחדל: מושבתת
    זמינות

    ברירת מחדל: מושבתת
    התאמה אישית של אורך השאילתות מסמנים את התיבה הזו כדי להתאים אישית את המגבלה על האורך של מחרוזת שאילתה. שאילתות ארוכות יותר שימושיות יותר לשאילתות ניתוח, אבל הן גם דורשות יותר זיכרון. כל מחרוזת שאילתה שחורגת מהמגבלה שצוינה נחתכת בתצוגה.

    כשמשנים את מגבלת האורך של השאילתה, צריך להפעיל מחדש את המכונה. אפשר להוסיף תגים לשאילתות שחורגות ממגבלת האורך.

    במכונות של Cloud SQL מהדורת Enterprise, כדי לתעד שאילתות באורך של יותר מ-1024 בייטים צריך להגדיר את הדגל לניהול מסד הנתונים max_digest_length לפחות לאותו ערך (עד 4500 בייטים). במכונות של Cloud SQL Enterprise Plus, ‏Cloud SQL מנהל את max_digest_length באופן אוטומטי (עד 1MB).
    אפשר להגדיר את המגבלה בבייטים, מ-256 בייטים עד 4500 בייטים.

    ברירת מחדל: 1024.
    אפשר לציין מגבלה בבייטים מ-1 עד 1048576.

    ברירת מחדל: 1024 בייטים (1KB).

    הגדרת תדירות הדגימה המקסימלית מסמנים את התיבה הזו כדי להגדיר את תדירות הדגימה המקסימלית. תדירות הדגימה היא מספר הדגימות של תוכניות לביצוע שאילתות שנתפסות בדקה בכל מסדי הנתונים במכונה. אם תגדילו את תדירות הדגימה, סביר להניח שתקבלו יותר נקודות על הגרף, אבל יכול להיות שהתקורה של הביצועים תגדל. כדי להשבית את הדגימה, מגדירים את הערך ל-0. אתם יכולים לשנות את הערך הזה למספר מ-0 עד 20.

    ברירת מחדל: 5.
    אפשר להגדיל את המקסימום ל-200 כדי לספק יותר נקודות על הגרף.

    ברירת מחדל: 5.
  8. לוחצים על Save.

הפעלת תובנות לגבי שאילתות בכמה מכונות

  1. נכנסים לדף Cloud SQL Instances במסוף Google Cloud .

    כניסה לדף Cloud SQL Instances

  2. לוחצים על התפריט More Actions בכל שורה.
  3. בוחרים באפשרות Enable Query insights.
  4. בתיבת הדו-שיח, מסמנים את התיבה Enable Query insights for multiple instances.
  5. לוחצים על Enable.
  6. בתיבת הדו-שיח הבאה, בוחרים את המכונות שרוצים להפעיל בהן את Query Insights.
  7. לוחצים על Enable Query insights.

gcloud

כדי להפעיל את תובנות לגבי שאילתות במכונה של Cloud SQL באמצעות gcloud, מריצים את gcloud sql instances patch עם הדגל --insights-config-query-insights-enabled, כמו שמופיע בהמשך, אחרי שמחליפים את INSTANCE_ID במזהה של המכונה.

אם מפעילים את Query Insights במכונה של Cloud SQL Enterprise Plus, ההמלצות של Index Advisor מופעלות באופן אוטומטי.

כשמפעילים את התובנות לגבי שאילתות, המערכת מפעילה באופן אוטומטי את תיעוד הביצועים של MySQL עם ערכי ברירת המחדל של הטריגרים לתיעוד הביצועים. אפשר להגדיר את תיעוד הביצועים

    gcloud sql instances patch INSTANCE_ID \
    --insights-config-query-insights-enabled
  

בנוסף, צריך להשתמש באחד או יותר מהדגלים האופציונליים הבאים:

  • --insights-config-record-client-address

    מאחסן את כתובות ה-IP של הלקוחות שמהן מגיעות השאילתות, ועוזר לכם לקבץ את הנתונים האלה כדי להריץ עליהם מדדים. השאילתות מגיעות מיותר ממארח אחד. בדיקת התרשימים של שאילתות מכתובות ה-IP של הלקוח יכולה לעזור לזהות את מקור הבעיה.

  • --insights-config-record-application-tags

    שומר תגי אפליקציות שעוזרים לכם לקבוע אילו ממשקי API ונתיבי MVC (מודל-תצוגה-בקר) שולחים בקשות, ולקבץ את הנתונים כדי להריץ עליהם מדדים. כדי להשתמש באפשרות הזו, צריך להוסיף הערות לשאילתות עם קבוצה ספציפית של תגים. כדי לעשות את זה, אפשר להשתמש בספריית הכלים האוטומטיים למיפוי אובייקטים יחסי (ORM) בקוד פתוח sqlcommenter. המידע הזה עוזר לתובנות לגבי שאילתות לזהות את מקור הבעיה ואת ה-MVC שממנו הבעיה מגיעה. נתיבי האפליקציות עוזרים לכם לעקוב אחרי האפליקציות.

  • --insights-config-query-string-length

    מגדירה את מגבלת ברירת המחדל לאורך השאילתה. שאילתות ארוכות יותר שימושיות יותר לשאילתות ניתוח, אבל הן גם דורשות יותר זיכרון. כשמשנים את מגבלת האורך של השאילתה, צריך להפעיל מחדש את המכונה. עדיין אפשר להוסיף תגים לשאילתות שחורגות ממגבלת האורך.

    במכונות של Cloud SQL מהדורת Enterprise, כדי לתעד שאילתות באורך של יותר מ-1024 בייטים, צריך להגדיר את הדגל לניהול מסד הנתונים max_digest_length לפחות לאותו ערך (עד 4500 בייטים). במכונות של Cloud SQL Enterprise Plus, ‏Cloud SQL מנהל את max_digest_length באופן אוטומטי (עד 1MB). ב-Cloud SQL מהדורת Enterprise, אפשר לציין ערך בבייטים מ-256 עד 4500. אורך השאילתה שמוגדר כברירת מחדל הוא 1024 בייטים. במהדורת Cloud SQL Enterprise Plus, אפשר לציין מגבלה בבייטים מ-1 עד 1048576. ערך ברירת המחדל הוא 1024 בייטים (1KB).

  • --insights-config-query-plans-per-minute

    כברירת מחדל, נלכדות עד 5 דגימות של תוכניות לביצוע שאילתות בכל דקה בכל מסדי הנתונים במכונה. הגדלת תדירות הדגימה תספק לכם יותר נקודות על הגרף, אבל עלולה להוסיף תקורה לביצועים. כדי להשבית את הדגימה, מגדירים את הערך הזה ל-0. במהדורת Cloud SQL Enterprise, אפשר לשנות את הערך מ-0 ל-20. במהדורת Cloud SQL Enterprise Plus, אפשר להגדיל את המספר המקסימלי עד ל-200 כדי לספק יותר נקודות נתונים.

מחליפים את מה שכתוב בשדות הבאים:

gcloud sql instances patch INSTANCE_ID \
--insights-config-query-insights-enabled \
--insights-config-query-string-length=INSIGHTS_CONFIG_QUERY_STRING_LENGTH \
--insights-config-query-plans-per-minute=QUERY_PLANS_PER_MINUTE \
--insights-config-record-application-tags \
--insights-config-record-client-address \
--tier=API_TIER_STRING \
--region=REGION
  

REST v1

כדי להפעיל את Query Insights במכונה של Cloud SQL באמצעות ה-API בארכיטקטורת REST, מפעילים את ה-method‏ instances.patch עם ההגדרות של insightsConfig.

אם מפעילים את Query Insights במכונה של Cloud SQL Enterprise Plus, ההמלצות של Index Advisor מופעלות באופן אוטומטי.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • ‫PROJECT_ID: מזהה הפרויקט
  • ‫INSTANCE_ID: מזהה המכונה

ה-method של ה-HTTP וכתובת ה-URL:

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID

תוכן בקשת JSON:

{
  "settings" : {
     "insightsConfig" : {
       "queryInsightsEnabled" : true,
       "recordClientAddress" : true,
       "recordApplicationTags" : true,
       "queryStringLength" : 1024,
       "queryPlansPerMinute" : 20,
   }
  }
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2025-03-28T22:43:40.009Z",
  "operationType": "UPDATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

Terraform

כדי להפעיל את Query Insights במכונה של Cloud SQL באמצעות Terraform, מגדירים את הדגל query_insights_enabled לערך true.

אם מפעילים את Query Insights במכונה של Cloud SQL Enterprise Plus, ההמלצות של Index Advisor מופעלות באופן אוטומטי.

אפשר גם להשתמש באחד או יותר מהדגלים האופציונליים הבאים:

  • ‫query_string_length: ב-Cloud SQL מהדורת Enterprise, אפשר לציין ערך בבייטים מ-256 עד 4500. אורך השאילתה שמוגדר כברירת מחדל הוא 1024 בייטים. במהדורת Cloud SQL Enterprise Plus, אפשר לציין מגבלה בבייטים מ-1 עד 1048576. ערך ברירת המחדל הוא 1024 בייטים (1KB).

    במכונות של Cloud SQL מהדורת Enterprise, כדי לתעד שאילתות באורך של יותר מ-1024 בייטים צריך להגדיר את הדגל לניהול מסד הנתונים max_digest_length לפחות לאותו ערך (עד 4500 בייטים). במכונות של Cloud SQL Enterprise Plus, ‏Cloud SQL מנהל את max_digest_length באופן אוטומטי (עד 1MB).
  • ‫record_application_tags: מגדירים את הערך true אם רוצים לתעד תגי אפליקציות מהשאילתה.
  • ‫record_client_address: מגדירים את הערך true אם רוצים לתעד את כתובת ה-IP של הלקוח. ערך ברירת המחדל הוא false.
  • ‫query_plans_per_minute: במהדורת Cloud SQL Enterprise, אפשר להגדיר את הערך מ-0 עד 20. ערך ברירת המחדל הוא 5. במהדורת Cloud SQL Enterprise Plus, אפשר להגדיל את הערך המקסימלי עד ל-200 כדי לספק יותר נקודות נתונים.

הנה דוגמה:

  resource "google_sql_database_instance" "INSTANCE_NAME" {
  name                = "INSTANCE_NAME"
  database_version    = "MYSQL_VERSION"
  region              = "REGION"
  root_password       = "PASSWORD"
  deletion_protection = false # set to true to prevent destruction of the resource
  settings {
    tier = "DB_TIER"
    insights_config {
      query_insights_enabled  = true
      query_string_length     = 2048 # Optional
      record_application_tags = true # Optional
      record_client_address   = true # Optional
      query_plans_per_minute  = 10 # Optional
    }
  }
  }
  

כך מחילים את ההגדרות של Terraform בפרויקט ב- Google Cloud :

הכנת Cloud Shell

  1. מפעילים את Cloud Shell.
  2. מגדירים את פרויקט ברירת המחדל ב- Google Cloud שבו רוצים להחיל את ההגדרות של Terraform.

    תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    אם תגדירו ערכים ספציפיים בקובץ התצורה של Terraform, הם יבטלו את ערכי ברירת המחדל של משתני הסביבה.

הכנת הספרייה

לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).

  1. יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת .tf, למשל main.tf. במדריך הזה, הקובץ נקרא main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.

    מעתיקים את הקוד לדוגמה בקובץ main.tf החדש שיצרתם.

    לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.

  3. בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
  4. שומרים את השינויים.
  5. מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
    terraform init

    אופציונלי: תוכלו לכלול את האפשרות -upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:

    terraform init -upgrade

החלה של השינויים

  1. בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
    terraform plan

    מתקנים את ההגדרות לפי הצורך.

  2. מריצים את הפקודה הבאה ומזינים yes בהודעה שמופיעה, כדי להחיל את הגדרות Terraform:
    terraform apply

    ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!‎".

  3. פותחים את הפרויקט ב- Google Cloud כדי להציג את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.

המדדים אמורים להיות זמינים בתובנות לגבי שאילתות תוך כמה דקות מסיום השאילתה. מדיניות שמירת הנתונים של Cloud Monitoring

המעקבים של Query Insights מאוחסנים ב-Cloud Trace. מדיניות שמירת הנתונים של Cloud Trace

הצגת לוח הבקרה של Query Insights

בלוח הבקרה של Query Insights מוצג עומס השאילתות על סמך הגורמים שבחרתם. עומס השאילתות הוא מדד של העבודה הכוללת של כל השאילתות במכונה בטווח התאריכים שנבחר. בלוח הבקרה יש כמה מסננים שמאפשרים לראות את עומס השאילתות.

כדי לפתוח את לוח הבקרה Query insights:

  1. כדי לפתוח את הדף Overview של מכונה, לוחצים על שם המכונה.
  2. בתפריט הניווט של Cloud SQL, לוחצים על Query Insights או על Go to Query Insights for more in-depth info on queries and performance בדף Instance overview.
  3. מרכז הבקרה Query insights נפתח. בהתאם למהדורה שבה אתם משתמשים, Cloud SQL Enterprise או Cloud SQL Enterprise Plus, בלוח הבקרה של Query Insights מוצג המידע הבא על המכונה:

מהדורת Cloud SQL Enterprise Plus

מרכז הבקרה של Query Insights במהדורת Enterprise Plus, עם תפריטים לסינון לפי מסד נתונים, משתמש וכתובת לקוח.
          אפשר גם לסנן לפי טווח זמן של שעה, 6 שעות, יום אחד, 30 ימים או לבחור טווח זמן בהתאמה אישית. בתרשים הזה מוצג העומס על מסד הנתונים לפי זמן הביצוע במילי-שניות לכל השאילתות בתקופה של שעה.
  • ‫All queries: הצגת העומס על מסד הנתונים של כל השאילתות בטווח התאריכים שנבחר. כל שאילתה מקודדת בצבע משלה. כדי לראות נקודת זמן של שאילתה ספציפית, מציבים את הסמן מעל התרשים של השאילתה.
  • מסד נתונים: סינון עומס השאילתות במסד נתונים ספציפי או בכל מסדי הנתונים.
  • משתמש: סינון עומס השאילתות מחשבון משתמש ספציפי.
  • כתובת הלקוח: סינון עומס השאילתות מכתובת IP ספציפית.
  • Time range: סינון עומס השאילתות לפי טווחי תאריכים, כמו שעה, 6 שעות, יום, 7 ימים, 30 ימים או טווח בהתאמה אישית.
  • סוגי אירועי המתנה: סינון עומס השאילתות לפי סוגי אירועי המתנה של מעבד (CPU) ונעילה.
  • שאילתות, סוגי אירועי המתנה, מסדי נתונים, משתמשים, תגים וכתובות לקוח: מיון לפי המאפיינים המובילים שתורמים הכי הרבה לעומס על מסד הנתונים בתרשים. סינון העומס על מסד הנתונים

Cloud SQL מהדורת Enterprise

מרכז הבקרה של Query Insights, עם תפריטים נפתחים למסדי נתונים, למשתמשים ולכתובות. משמאל לתפריטים הנפתחים יש מסנן להגדרת טווח תאריכים. בנוסף,
         בתרשים מוצג העומס על מסד הנתונים של השאילתות המובילות. בתחתית התרשים יש תיבות בחירה לקיבולת המעבד, למעבד ולהמתנה למעבד, להמתנה ל-IO ולהמתנה לנעילה, וכרטיסייה לכל שאילתה ותג.
  • מסד נתונים: סינון עומס השאילתות במסד נתונים ספציפי או בכל מסדי הנתונים.
  • משתמש: סינון עומס השאילתות מחשבון משתמש ספציפי.
  • כתובת הלקוח: סינון עומס השאילתות מכתובת IP ספציפית.
  • Time range: סינון עומס השאילתות לפי טווחי זמן, כמו שעה, 6 שעות, יום, 7 ימים, 30 ימים או טווח בהתאמה אישית.
  • תרשים עומס מסד הנתונים: מציג את תרשים עומס השאילתות, על סמך נתונים מסוננים.
  • ‫CPU capacity, CPU and CPU wait, IO wait, and Lock wait: סינון העומסים לפי האפשרויות שנבחרו. במאמר הצגת העומס על מסד הנתונים של השאילתות המובילות מפורט מידע על כל אחד מהמסננים האלה.
  • ‫Queries ו-Tags: סינון עומס השאילתות לפי שאילתה שנבחרה או לפי תג שאילתת SQL שנבחר. סינון העומס על מסד הנתונים

הצגת העומס על מסד הנתונים בכל השאילתות

עומס השאילתות במסד הנתונים הוא מדד של העבודה (בשניות מעבד) שמבצעות השאילתות שהופעלו במסד הנתונים שנבחר לאורך זמן. כל שאילתה שפועלת משתמשת במשאבי מעבד (CPU), במשאבי קלט/פלט או במשאבי נעילה, או ממתינה להם. עומס השאילתות במסד הנתונים הוא היחס בין משך הזמן שלוקח לכל השאילתות להסתיים בחלון זמן נתון לבין הזמן בפועל.

בלוח הבקרה של תובנות לגבי שאילתות ברמה העליונה מוצג התרשים Database load — all top queries. התפריטים הנפתחים במרכז הבקרה מאפשרים לסנן את התרשים לפי מסד נתונים, משתמש או כתובת לקוח ספציפיים.

מהדורת Cloud SQL Enterprise Plus

תרשים העומס של מסד הנתונים, עם עומס של קיבולת המעבד, המעבד וההמתנה למעבד, ההמתנה ל-IO וההמתנה לנעילה.

Cloud SQL מהדורת Enterprise

תרשים העומס של מסד הנתונים, עם עומס על קיבולת המעבד, המעבד וההמתנה למעבד, ההמתנה ל-IO וההמתנה לנעילה.

הקווים הצבעוניים בתרשים מציגים את עומס השאילתות, בחלוקה לקטגוריות:

  • קיבולת המעבד (CPU): מספר המעבדים שזמינים במכונה.
  • ‫CPU and CPU Wait: היחס בין הזמן שנדרש לשאילתות במצב פעיל לבין הזמן בפועל. המתנות ל-IO ולנעילה לא חוסמות שאילתות שנמצאות במצב פעיל. המשמעות של המדד הזה היא שהשאילתה משתמשת במעבד (CPU) או ממתינה למתזמן של Linux כדי לתזמן את תהליך השרת שמריץ את השאילתה בזמן שתהליכים אחרים משתמשים במעבד (CPU).
  • IO Wait: היחס בין הזמן שלוקח לשאילתות שממתינות ל-IO לבין זמן השעון. ההמתנה לקלט/פלט כוללת המתנה לקריאת קלט/פלט והמתנה לכתיבת קלט/פלט. אם אתם רוצים פירוט של המידע על ההמתנות לקלט/פלט, תוכלו לראות אותו ב-Cloud Monitoring. למידע נוסף, קראו את המאמר מדדים של Cloud SQL.
  • ‫Lock Wait: היחס בין הזמן שנדרש לשאילתות שממתינות לנעילות לבין זמן השעון. הוא כולל את Lock Waits,‏ LwLock Waits ו-Buffer pin Lock waits. כדי לראות פירוט של המידע על המתנות לנעילה, אפשר להשתמש ב-Cloud Monitoring. למידע נוסף, קראו את המאמר מדדים של Cloud SQL.

הקווים הצבעוניים בתרשים מציגים את העומס בכל מסד נתונים לפי זמן הביצוע. כדי לענות על השאלות הבאות, אפשר לעיין בתרשים ולהשתמש באפשרויות הסינון:

  • האם עומס השאילתות גבוה? האם יש עלייה חדה בגרף או שהוא עולה לאורך זמן? אם לא רואים עומס גבוה, הבעיה היא לא בשאילתה.
  • כמה זמן העומס גבוה? האם הוא גבוה רק עכשיו או שהוא גבוה כבר הרבה זמן? משתמשים בבורר הטווח כדי לבחור תקופות זמן שונות ולגלות כמה זמן הבעיה נמשכת. מגדילים את התצוגה כדי לראות חלון זמן שבו נצפו עליות חדות בעומס השאילתות. מקטינים את התצוגה כדי לראות עד שבוע אחד בציר הזמן.
  • מה גורם לעומס הגבוה? אתם יכולים לבחור אפשרויות לבדיקת קיבולת המעבד, המעבד וההמתנה למעבד, ההמתנה לנעילה או ההמתנה לקלט/פלט. התרשים של כל אחת מהאפשרויות האלה מוצג בצבע שונה, כדי שתוכלו לזהות את האפשרות עם העומס הגבוה ביותר. הקו הכחול הכהה בתרשים מציג את הקיבולת המקסימלית של המעבד במערכת. כך אפשר להשוות בין עומס השאילתות לבין הקיבולת המקסימלית של המעבד (CPU) במערכת. ההשוואה הזו עוזרת לכם לקבוע אם למכונה חסרים משאבי מעבד.
  • באיזה מסד נתונים יש עומס? כדי למצוא את מסדי הנתונים עם העומסים הגבוהים ביותר, בוחרים מסדי נתונים שונים מהתפריט הנפתח Databases.
  • האם משתמשים או כתובות IP ספציפיים גורמים לעומסים גבוהים יותר? בוחרים משתמשים וכתובות שונים מהתפריטים הנפתחים כדי לזהות את אלה שגורמים לעומסים גבוהים יותר.

סינון העומס על מסד הנתונים

אפשר לסנן את העומס על מסד הנתונים לפי שאילתות או תגים. אם אתם משתמשים בתובנות לגבי שאילתות ב-Cloud SQL Enterprise Plus, אתם יכולים להתאים אישית את תרשים העומס על מסד הנתונים כדי לפרט את הנתונים שמוצגים לפי כל אחד מהמאפיינים הבאים:

  • כל השאילתות

  • סוגי אירועי המתנה

  • מסדי נתונים

  • משתמשים

  • תגים

  • כתובות של לקוחות

כדי להתאים אישית את תרשים עומס מסד הנתונים, בוחרים מאפיין מהתפריט הנפתח Database Load by execution time.

הצגת הגורמים העיקריים לעומס על מסד הנתונים

כדי לראות את הגורמים העיקריים לעומס על מסד הנתונים, אפשר להשתמש בטבלה Top dimensions by database load. בטבלה Top dimensions by database load מוצגים הגורמים העיקריים לעומס במסד הנתונים בתקופה ובמאפיין שבחרתם בתפריט הנפתח של התרשים Database Load by execution time. אתם יכולים לשנות את התקופה או את המאפיין כדי לראות את תורמי התוכן המובילים למאפיין או לתקופה אחרים.

בטבלה Top dimensions by data load, אפשר לבחור את הכרטיסיות הבאות.

Tab תיאור
שאילתות בטבלה מוצגות השאילתות המנורמלות המובילות לפי זמן הביצוע הכולל. לכל שאילתה, הנתונים שמוצגים בעמודות מפורטים באופן הבא:
  • זמן ביצוע ממוצע (באלפיות השנייה): הזמן הממוצע לביצוע השאילתה.
    • יכול להיות שהרשימה של הרשומות בעמודה Avg execution time (ms) חלקית. לדוגמה, אם שאילתה שהריץ משתמש מסוים היא הגורם לעומס גבוה על מסד הנתונים, וההתנהגות הזו לא מייצגת את ההתנהגות הממוצעת של המשתמש, יכול להיות שהרשומה של שאילתת המשתמש הזו לא תיכלל.
  • ‫Total execution time (ms): משך הזמן הכולל של הרצת השאילתה הספציפית.
  • ‫Avg rows returned: מספר השורות הממוצע שנשלפו בשאילתה.
  • מספר הקריאות: מספר הפעמים שהאפליקציה קראה לשאילתה.
  • ‫%load by SELECTED_DIMENSION: תרשים הקו של האחוזים מתאר את התפלגות המאפיין שנבחר בשאילתה הספציפית.
סוגי אירועי המתנה בטבלה מוצגת רשימה של סוגי אירועי ההמתנה המובילים שהתרחשו במהלך התקופה שנבחרה. הטבלה הזו זמינה רק לתובנות לגבי שאילתות ב-Cloud SQL Enterprise Plus.
  • זמן המתנה ממוצע (באלפיות השנייה): משך הזמן הממוצע שהשאילתות המתינו בסוג אירוע ההמתנה הספציפי.
  • Total time spent in wait (ms): משך הזמן הכולל של ביצוע השאילתות בסוג הספציפי של אירוע ההמתנה.
  • ספירת סוגי אירועי המתנה: מספר הפעמים שסוג ספציפי של אירוע המתנה התרחש בתקופה שנבחרה.
  • ‫‎%load by SELECTED_DIMENSION‎: תרשים הקו של האחוזים מתאר את ההתפלגות של המאפיין שנבחר לתרשים העומס על מסד הנתונים, לפי סוג אירוע ההמתנה הספציפי.
מסדי נתונים בטבלה מוצגת רשימת מסדי הנתונים המובילים שתרמו לעומס בתקופה שנבחרה בכל השאילתות שבוצעו.
  • ‫Avg time spent in database (ms): משך הזמן הממוצע שהשאילתות היו במסד הנתונים הספציפי.
  • ‫Total time spent in database (ms): משך הזמן הכולל של הרצת השאילתות במסד הנתונים הספציפי.
  • ‎%load by SELECTED_DIMENSION‎: תרשים הקו של האחוזים מתאר איך המאפיין שנבחר לתרשים העומס של מסד הנתונים מתפלג במסד הנתונים הספציפי.
משתמשים בטבלה מוצגת רשימת המשתמשים המובילים בתקופה שנבחרה בכל השאילתות שבוצעו.
  • ‫Avg time spent in user (ms): משך הזמן הממוצע שהשאילתות השקיעו במשתמש הספציפי.
  • ‫Total time spent in user (ms).‎: משך הזמן הכולל של הרצת השאילתות אצל המשתמש הספציפי.
  • ‫%load by SELECTED_DIMENSION: תרשים הקו של האחוזים מתאר איך המאפיין שנבחר לתרשים העומס על מסד הנתונים מתפלג בין המשתמשים הספציפיים.
תגים למידע על תגים, קראו את המאמר סינון לפי תגי שאילתות.
כתובות של לקוחות בטבלה מוצגת רשימת המשתמשים המובילים בתקופה שנבחרה בכל השאילתות שבוצעו.
  • Total time spent in client address (ms): זמן הביצוע הכולל של השאילתות עבור לקוח ספציפי.
  • ‫%load by SELECTED_DIMENSION: תרשים הקו של האחוזים מתאר איך המאפיין שנבחר לתרשים העומס על מסד הנתונים מתפלג בלקוח הספציפי.

סינון לפי שאילתות

בטבלה Top dimensions by database load מוצגת סקירה כללית של השאילתות שגורמות לעומס השאילתות הגבוה ביותר. בטבלה מוצגות כל השאילתות שעברו נרמול בטווח הזמן ובאפשרויות שנבחרו בלוח הבקרה של "תובנות לגבי שאילתות". השאילתות ממוינות לפי זמן הביצוע הכולל בטווח התאריכים שנבחר.

מהדורת Cloud SQL Enterprise Plus

כדי למיין את הטבלה, לוחצים על כותרת של עמודה.

תרשים העומס על מסד הנתונים עם עומס של שאילתות, עם מסננים שנבחרו לקיבולת המעבד, למעבד ולהמתנה למעבד, להמתנה ל-IO ולהמתנה לנעילה.

Cloud SQL מהדורת Enterprise

כדי למיין את הטבלה, בוחרים כותרת עמודה או מאפיין מתוך סינון שאילתות.

תרשים העומס על מסד הנתונים עם עומס של שאילתות, עם מסננים שנבחרו לקיבולת המעבד, למעבד ולהמתנה למעבד, להמתנה ל-IO ולהמתנה לנעילה.

בטבלה מוצגים המאפיינים הבאים:

  • שאילתה: מחרוזת השאילתה המנורמלת. כברירת מחדל, בתובנות לגבי שאילתות מוצגים רק 1,024 תווים במחרוזת השאילתה. שאילתות עם התווית UTILITY COMMAND בדרך כלל כוללות פקודות BEGIN, COMMIT ו-EXPLAIN או פקודות wrapper.
  • ‫Database: מסד הנתונים שבו הופעלה השאילתה.
  • ‫Recommendations: ההמלצות המוצעות, כמו Create indexes, לשיפור ביצועי השאילתות.
  • Load by total time/Load by CPU/Load by IO wait/Load by lock wait: האפשרויות שבאמצעותן אפשר לסנן שאילתות ספציפיות כדי למצוא את העומס הגדול ביותר.
  • % load by Queries: אחוז העומס לפי שאילתה ספציפית.
  • ‫Analyze latency: אם הפעלתם את AI-assisted troubleshooting (גרסת טרום-השקה (Preview)) במכונה הזו, אתם יכולים ללחוץ על הקישור הזה כדי לפתור בעיות של שאילתות איטיות.
  • ‫Avg execution time (ms): הזמן הממוצע להרצת השאילתה.
  • מספר הקריאות: מספר הפעמים שהאפליקציה קראה לשאילתה.
  • מספר ממוצע של שורות שהוחזרו: מספר השורות הממוצע שהוחזר לשאילתה.
  • מספר ממוצע של שורות שנסרקו: מספר השורות הממוצע שנסרקו בשאילתה.

התובנות לגבי שאילתות שומרות ומציגות רק שאילתות מנורמלות.

כברירת מחדל, התכונה "תובנות לגבי שאילתות" לא אוספת כתובות IP או מידע על תגים. אתם יכולים להפעיל את Query Insights כדי לאסוף את המידע הזה, ובמקרה הצורך להשבית את האיסוף.

מעקבי תוכניות לביצוע שאילתות לא אוספים או מאחסנים ערכים קבועים, ומסירים כל פרטים אישיים מזהים (PII) שהקבוע עשוי להציג.

ב-Query Insights מוצגות שאילתות מנורמלות, כלומר ? מחליף את הערך הקבוע המילולי. בדוגמה הבאה, הקבוע name הוסר והוחלף ב-?.

  UPDATE
    "demo_customer"
  SET
    "customer_id" = ?::uuid,
    "name" = ?,
    "address" = ?,
    "rating" = ?,
    "balance" = ?,
    "current_city" = ?,
    "current_location" = ?
  WHERE
    "demo_customer"."id" = ?
  

סינון לפי תגי שאילתות

כדי לפתור בעיות באפליקציה, קודם צריך להוסיף תגים לשאילתות ה-SQL. התגים של עומס השאילתות מספקים פירוט של עומס השאילתות של התג שנבחר לאורך זמן.

התכונה "תובנות לגבי שאילתות" מספקת מעקב שמתמקד באפליקציות, כדי לאבחן בעיות בביצועים של אפליקציות שנוצרו באמצעות ORM. אם אתם אחראים על כל מחסנית האפליקציה, תובנות לגבי שאילתות מספקות מעקב אחר שאילתות מתצוגת האפליקציה. תיוג שאילתות עוזר לכם למצוא בעיות במבנים ברמה גבוהה יותר, כמו בלוגיקה העסקית או במיקרו-שירות.

אפשר לתייג שאילתות לפי הלוגיקה העסקית, למשל תשלום, מלאי, ניתוח עסקי או משלוח. לאחר מכן תוכלו למצוא את עומס השאילתות שנוצר על ידי הלוגיקה העסקית השונה. לדוגמה, יכול להיות שתבחינו באירועים לא צפויים, כמו עלייה חדה בתג של ניתוח עסקי בשעה 13:00 או עלייה לא צפויה בשירות תשלומים במגמה בשבוע הקודם.

כדי לחשב את עומס מסד הנתונים לתג, התובנות לגבי שאילתות משתמשות במשך הזמן של כל שאילתה שמשתמשת בתג שבחרתם. הכלי מחשב את זמן הסיום בגבולות הדקה באמצעות זמן שעון הקיר.

כדי להציג את טבלת התגים, בוחרים באפשרות Tags בלוח הבקרה של תובנות לגבי שאילתות. הטבלה ממיינת את התגים לפי זמן הטעינה הכולל שלהם.

מרכז הבקרה של Query Insights, עם עומס לתגים ורשימת תגים.

כדי למיין את הטבלה, בוחרים מאפיין מתוך Filter tags או לוחצים על כותרת של עמודה. בטבלה מוצגים המאפיינים הבאים:

  • ‫Action, Controller, Framework, Route, Application, DB driver: כל מאפיין שהוספתם לשאילתות מופיע כעמודה. כדי לסנן לפי תגים, צריך להוסיף לפחות אחד מהמאפיינים האלה.
  • ‫Load by total time/Load by CPU/Load by IO wait/Load by lock wait: אפשרויות לסינון שאילתות ספציפיות כדי למצוא את העומס הגדול ביותר לכל אפשרות.
  • ‫Avg execution time (ms): משך הזמן הממוצע להרצת השאילתה.
  • מספר ממוצע של שורות שהוחזרו: מספר השורות הממוצע שהוחזר לשאילתה.
  • Avg rows scanned: מספר השורות הממוצע שנסרקו בשאילתה.
  • מספר הקריאות: מספר הפעמים שהאפליקציה קראה לשאילתה.
  • ‫Database: מסד הנתונים שבו הופעלה השאילתה.

הצגת פרטי שאילתה של שאילתה או תג ספציפיים

כדי לבדוק אם שאילתה או תג ספציפיים הם שורש הבעיה, מבצעים את הפעולות הבאות בכרטיסייה Queries או בכרטיסייה Tags, בהתאמה:

  1. כדי למיין את הרשימה בסדר יורד, לוחצים על הכותרת טעינה לפי זמן כולל.
  2. לוחצים על השאילתה או התג בחלק העליון של הרשימה. העומס עליו הוא הגבוה ביותר, והוא לוקח יותר זמן מהאחרים.

הדף Query details נפתח ומוצגים בו הפרטים של השאילתה או התג שנבחרו.

בדיקת עומס של שאילתה ספציפית

הדף Query details של שאילתה שנבחרה נראה כך:

הצגת תרשימי העומס והזמן של האחזור במסד הנתונים לשאילתה ספציפית.

בתרשים Database load — specific query מוצג מדד של העבודה (בשניות מעבד) שהשאילתה המנורמלת ביצעה בשאילתה שנבחרה לאורך זמן. כדי לחשב את העומס, המערכת משתמשת במשך הזמן שלוקח לשאילתות המנורמלות להסתיים בגבולות הדקה, ביחס לזמן בפועל. בחלק העליון של הטבלה מוצגים 1, 024 התווים הראשונים של השאילתה המנורמלת, ללא ליטרלים, מסיבות של צבירה ופרטים אישיים מזהים.

תרשים העומס על מסד הנתונים עם עומס של שאילתה ספציפית, עם מסננים שנבחרו לקיבולת המעבד, למעבד ולהמתנה למעבד, להמתנה ל-IO ולהמתנה לנעילה.

כמו בתרשים של סך כל השאילתות, אפשר לסנן את העומס של שאילתה ספציפית לפי מסד נתונים, משתמש וכתובת לקוח. עומס השאילתות מחולק לקיבולת המעבד, מעבד והמתנה למעבד, המתנה לקלט/פלט והמתנה לנעילה.

בדיקת עומס של שאילתות עם תג ספציפי

כך נראה מרכז הבקרה של תג שנבחר. לדוגמה, אם כל השאילתות מתשלום של מיקרו-שירותים מתויגות בתור payment, אפשר לראות את כמות עומס השאילתות במגמה על ידי הצגת התג payment.

הצגת תרשימי העומס והזמן של מסד הנתונים בדף של תג ספציפי.

בתרשים Database load — specific tags מוצג מדד העבודה (בשניות מעבד) שבוצעו לאורך זמן במסד הנתונים שנבחר, על ידי שאילתות שתואמות לתגים שנבחרו. כמו בתרשים של סך כל השאילתות, אפשר לסנן את העומס של תג ספציפי לפי Database,‏ User ו-Client address.

בדיקת הפעולות בתוכנית לביצוע שאילתה שנדגמה

תוכנית לביצוע שאילתה לוקחת דגימה מהשאילתה ומפרקת אותה לפעולות נפרדות. הוא מסביר ומנתח כל פעולה בשאילתה.

ב-MySQL 5.7, התצוגה EXPLAIN מספקת תוכנית משוערת לביצוע שאילתה, וב-MySQL 8.0 ובגרסאות חדשות יותר, התצוגה EXPLAIN ANALYZE מספקת תוכנית לביצוע שאילתה. תוכנית משוערת לביצוע שאילתה מספקת את זמן הביצוע המשוער של שאילתה, ואילו תוכנית לביצוע שאילתה מספקת מידע בזמן אמת על כל שלב בביצוע של שאילתה נתונה.

ב-MySQL 5.7, אפשר להשתמש בתוכניות לביצוע שאילתות בשאילתות הבאות, שנתמכות בהצהרה EXPLAIN:

  • לטבלאות בודדות: INSERT,‏ SELECT,‏ UPDATE ו-DELETE.
  • בכמה טבלאות: SELECT,‏ UPDATE ו-DELETE.

אתם יכולים ליצור תוכניות לביצוע שאילתות ב-MySQL מגרסה 8.0 ואילך לכל השאילתות שנתמכות על ידי EXPLAIN ANALYZE. הכלי הזה מראה איפה MySQL משקיע זמן בשאילתות SELECT בטבלאות בודדות ובמספר טבלאות. ב-Cloud SQL אי אפשר ליצור תוכניות לביצוע שאילתות של שפת טיפול בנתונים (DML) עם כמה טבלאות, כי השאילתות האלה לא נתמכות ב-EXPLAIN ANALYZE.

התכונה "תוכנית לדוגמה לביצוע שאילתה" מספקת תצוגת EXPLAIN ANALYZE לדוגמאות של תוכניות לביצוע שאילתות שקשורות לשאילתה המנורמלת. אלה תוכניות לביצוע שאילתות שמספקות פירוט של הזמן הפעיל שנדרש לכל פעולה בתוכנית.

בתרשים Query plan samples מוצגות כל התוכניות לביצוע שאילתות שפועלות בזמנים מסוימים, ומשך הזמן שלקח לכל תוכנית לפעול. אפשר לשנות את קצב הדגימה של תוכניות לביצוע שאילתות לדקה. הפעלת Query Insights

תרשים של תוכניות לדוגמה לביצוע שאילתות, עם זמן ההרצה בתחתית התרשים (ציר ה-X) ומספר השניות של ההרצה בצד שמאל (ציר ה-Y).

כברירת מחדל, בחלונית שמשמאל מוצגים הפרטים של תוכנית לביצוע שאילתה לדוגמה שנמשכת הכי הרבה זמן, כפי שמופיע בתרשים Query plan samples. כדי לראות את הפרטים של תוכנית אחרת לדוגמה לביצוע שאילתה, לוחצים על העיגול הרלוונטי בתרשים. בפרטים המורחבים מוצג מודל של כל הפעולות בתוכנית לביצוע השאילתה.

בכל פעולה מוצגים זמן האחזור, השורות שהוחזרו ועלות הפעולה. כשבוחרים פעולה, אפשר לראות פרטים נוספים, כמו בלוקים משותפים של היטים, סוג הסכימה, לולאות ושורות של תוכניות.

בתוכנית לביצוע השאילתה מוצגים זמן האחזור והעלות של כל פעולה שבוצעה בשאילתה.

כדי לצמצם את הבעיה, נסו לענות על השאלות הבאות:

  1. מהי צריכת המשאבים?
  2. איך היא קשורה לשאילתות אחרות?
  3. האם הצריכה משתנה לאורך זמן?

בדיקת מעקב שנוצר על ידי שאילתה לדוגמה

בנוסף לצפייה בתוכנית לדוגמה לביצוע שאילתה, אתם יכולים להשתמש בתובנות לגבי שאילתות כדי לצפות במעקב מקצה לקצה אחרי אפליקציה בהקשר של שאילתה לדוגמה. המעקב הזה יכול לעזור לכם לזהות את המקור של שאילתה בעייתית, על ידי הצגת הפעילות במסד הנתונים של בקשה ספציפית. בנוסף, רשומות ביומן שהאפליקציה שולחת ל-Cloud Logging במהלך הבקשה מקושרות למעקב, מה שעוזר לכם בחקירה.

כדי להציג את המעקב בהקשר:

  1. במסך Sample Query, לוחצים על הכרטיסייה End-to-end Trace. בכרטיסייה הזו מוצג תרשים גאנט שמפרט את הטווחים, שהם רשומות של פעולות ספציפיות, למעקב שנוצר על ידי השאילתה.
  2. כדי לראות פרטים נוספים על כל span, כמו מאפיינים ומטא-נתונים, בוחרים את ה-span.

אפשר גם לראות את המעקב בדף Trace Explorer. כדי לעשות זאת, לוחצים על View in Cloud Trace. במאמר חיפוש וחקירה של נתוני מעקב מוסבר איך משתמשים בדף Trace Explorer כדי לחקור את נתוני המעקב.

בדיקת זמן האחזור

זמן אחזור הוא משך הזמן שנדרש להשלמת השאילתה המנורמלת, בזמן אמת. בתרשים Latency אפשר לבדוק את זמן האחזור של השאילתה או התג. בלוח הבקרה של זמן האחזור מוצגים זמני האחזור באחוזונים ה-50, ה-95 וה-99, כדי לזהות התנהגויות חריגות.

בתמונה הבאה מוצג תרשים העומס על מסד הנתונים באחוזון ה-50 של שאילתה ספציפית, עם מסננים שנבחרו לקיבולת המעבד, למעבד ולהמתנה למעבד, להמתנה ל-IO ולהמתנה לנעילה.

תרשים זמן האחזור של שאילתה ספציפית, עם מסננים שנבחרו לקיבולת המעבד, למעבד ולהמתנה למעבד, להמתנה ל-IO ולהמתנה לנעילה.

זמן האחזור של שאילתות מקבילות נמדד בזמן אמת, למרות שעומס השאילתות יכול להיות גבוה יותר בגלל שימוש במספר ליבות להרצת חלק מהשאילתה.

כדי לצמצם את הבעיה, נסו לענות על השאלות הבאות:

  • מה גורם לעומס הגבוה? בוחרים אפשרויות כדי לבדוק את קיבולת המעבד, המעבד וההמתנה למעבד, ההמתנה לקלט/פלט או ההמתנה לנעילה.
  • כמה זמן העומס גבוה? האם הוא גבוה רק עכשיו? או שהוא גבוה כבר הרבה זמן? משנים את טווח התאריכים כדי למצוא את התאריך והשעה שבהם הביצועים של העומס התחילו לרדת.
  • האם היו עליות חדות בזמן האחזור? משנים את חלון הזמן כדי לבחון את זמן האחזור ההיסטורי של השאילתה המנורמלת.

הוספת תגים לשאילתות SQL

תיוג שאילתות SQL מפשט את פתרון הבעיות באפליקציה. אתם יכולים להשתמש ב-sqlcommenter כדי להוסיף תגים לשאילתות SQL באופן אוטומטי או ידני.

שימוש ב-sqlcommenter עם ORM

כשמשתמשים ב-ORM במקום לכתוב שאילתות SQL ישירות, יכול להיות שלא תמצאו את קוד האפליקציה שגורם לבעיות בביצועים. יכול להיות שגם תתקשו לנתח איך קוד האפליקציה משפיע על ביצועי השאילתות. כדי לפתור את הבעיה הזו, Query Insights מספק ספריית קוד פתוח שנקראת sqlcommenter. הספרייה הזו שימושית למפתחים ולאדמינים שמשתמשים בכלים של ORM כדי לזהות איזה קוד אפליקציה גורם לבעיות בביצועים.

אם אתם משתמשים ב-ORM וב-sqlcommenter ביחד, התגים נוצרים באופן אוטומטי. אתם לא צריכים להוסיף או לשנות קוד באפליקציה.

אפשר להתקין את sqlcommenter בשרת של האפליקציה. ספריית האינסטרומנטציה מאפשרת להפיץ את פרטי האפליקציה שקשורים למסגרת ה-MVC למסד הנתונים, יחד עם השאילתות כהערת SQL. מסד הנתונים אוסף את התגים האלה ומתחיל לתעד ולצבור נתונים סטטיסטיים לפי תגים, שהם אורתוגונליים לנתונים סטטיסטיים שנצברו לפי שאילתות מנורמלות. התגים מוצגים בתובנות לגבי שאילתות כדי שתוכלו לדעת איזו אפליקציה גורמת לעומס השאילתות, ולמצוא את קוד האפליקציה שגורם לבעיות בביצועים.

כשבודקים את התוצאות ביומנים של מסד נתוני SQL, הן מופיעות כך:

    SELECT * from USERS /action='run+this',
    controller='foo%3',
    traceparent='00-01',
    tracestate='rojo%2'/
  

התגים הנתמכים כוללים את שם הבקר, המסלול, המסגרת והפעולה.

קבוצת כלי ה-ORM ב-sqlcommenter נתמכת בשפות התכנות הבאות:

Python
  • Django
  • psycopg2
  • Sqlalchemy
  • Flask
Java
  • מצב תנומה
  • Spring
Ruby
  • מודעות צד
Node.js
  • Knex.js
  • Sequelize.js
  • Express.js
PHP
  • Laravel
המשך
  • http-tags
  • gorilla/mux
  • database/sql

למידע נוסף על sqlcommenter ואיך להשתמש בו במסגרת ה-ORM, קראו את המסמכים של sqlcommenter.

שימוש ב-sqlcommenter להוספת תגים

אם אתם לא משתמשים ב-ORM, אתם צריכים להוסיף באופן ידני תגים או הערות של sqlcommenter בפורמט הנכון של הערות SQL לשאילתת ה-SQL. בנוסף, צריך להוסיף לכל הצהרת SQL הערה שמכילה צמד מפתח/ערך שעבר סריאליזציה. צריך להשתמש לפחות באחד מהמקשים הבאים:

  • action=''
  • controller=''
  • framework=''
  • route=''
  • application=''
  • db driver=''

התכונה "תובנות לגבי שאילתות" מסירה את כל המפתחות האחרים.

השבתת התובנות לגבי שאילתות

המסוף

כדי להשבית את Query Insights במכונה של Cloud SQL באמצעות מסוף Google Cloud , מבצעים את השלבים הבאים:

  1. נכנסים לדף Cloud SQL Instances במסוף Google Cloud .

    כניסה לדף Cloud SQL Instances

  2. כדי לפתוח את הדף Overview של מכונה, לוחצים על שם המכונה.
  3. במשבצת Configuration (הגדרה), לוחצים על Edit configuration (עריכת ההגדרה).
  4. בקטע Configuration options, מרחיבים את Query insights.
  5. מבטלים את הסימון של התיבה Enable Query insights.
  6. לוחצים על Save.

gcloud

כדי להשבית את תובנות השאילתות במכונה של Cloud SQL באמצעות gcloud, מריצים את gcloud sql instances patch עם הדגל --no-insights-config-query-insights-enabled, אחרי שמחליפים את INSTANCE_ID במזהה של המכונה.

gcloud sql instances patch INSTANCE_ID \
  --no-insights-config-query-insights-enabled

REST

כדי להשבית את Query Insights במכונה של Cloud SQL באמצעות ה-API בארכיטקטורת REST, מפעילים את ה-method‏ instances.patch עם queryInsightsEnabled שמוגדר כ-false, באופן הבא.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • ‫project-id: מזהה הפרויקט.
  • ‫instance-id: מזהה המכונה.

ה-method של ה-HTTP וכתובת ה-URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

תוכן בקשת JSON:

{
  "settings" : { "insightsConfig" : { "queryInsightsEnabled" : false } }
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2021-01-28T22:43:40.009Z",
  "operationType": "UPDATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

השבתת Query Insights במהדורת Cloud SQL Enterprise Plus

כדי להשבית את Query Insights במהדורת Cloud SQL Enterprise Plus:

  1. נכנסים לדף Cloud SQL Instances במסוף Google Cloud .

    כניסה לדף Cloud SQL Instances

  2. כדי לפתוח את הדף Overview של מכונה, לוחצים על שם המכונה.
  3. לוחצים על Edit.
  4. בקטע Customize your instance, מרחיבים את Query insights.
  5. מבטלים את הסימון של התיבה הפעלת התכונות של Enterprise Plus.
  6. לוחצים על Save.

המאמרים הבאים