מעקב אחרי שאילתות פעילות

כדי לזהות את הגורמים לזמן האחזור של המערכת ולשימוש הגבוה במעבד (CPU) ב-AlloyDB ל-PostgreSQL, אתם יכולים לעקוב אחרי שאילתות פעילות שפועלות במשך זמן רב במסד הנתונים ולפתור בעיות שקשורות אליהן.

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

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

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

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

    כניסה לדף Clusters

  2. ברשימת האשכולות והמכונות, לוחצים על מכונה ראשית או על מכונה של מאגר קריאה.

  3. לוחצים על Query insights.

  4. לוחצים על עריכת ההגדרות.

  5. בחלון Edit query insights settings, בוחרים באפשרות Enable advanced query insights features for AlloyDB ואז באפשרות Active Query Analysis.

  6. לוחצים על שמירת השינויים.

  7. אופציונלי: אם מופיעה בקשה, ב-PostgreSQL בגרסה 17 או גרסה קודמת, בחלון Changes require restart לוחצים על Confirm and restart.

אתם יכולים להיעזר ב-Gemini Cloud Assist כדי לעקוב אחרי המשאבים של AlloyDB ולפתור בעיות שקשורות אליהם. מידע נוסף זמין במאמר מעקב ופתרון בעיות בעזרת AI.

הצגת השאילתות הפעילות

כדי לראות את השאילתות הפעילות:

  1. מבקשים מהאדמין להקצות לכם את התפקיד "צפייה ב-Database Insights Monitoring"‏ (roles/databaseinsights.monitoringViewer), או יוצרים תפקיד בהתאמה אישית עם הרשאת ה-IAM‏ databaseinsights.activeQueries.fetch.

  2. צריך להקצות את התפקיד הזה לכל משתמש שצופה בשאילתות פעילות.

  3. נכנסים לדף AlloyDB במסוף Google Cloud .

    כניסה ל-AlloyDB

  4. לוחצים על שם האשכול כדי לפתוח את הדף Overview שלו.

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

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

    אפשר לסנן את המידע לפי:

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

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

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

    ‫Longest running transactions: סקירה כללית של 50 השאילתות המובילות שפועלות במצבים active ו-idle in transaction, לפי זמן הביצוע בסדר יורד.

במרכז הבקרה של תובנות לגבי שאילתות אפשר לראות רשימה של 50 השאילתות הפעילות המנורמלות המובילות.

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

  • select * from my_table where id = 1;
  • select * from my_table where id = 2;
  • select * from my_table where id = 100;

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

select * from my_table where id = ?;

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

הצגת העסקאות המובילות שפועלות הכי הרבה זמן

בטבלה הבאה מתוארות העמודות בטבלה Longest running transactions בלוח הבקרה של תובנות לגבי שאילתות:

שם העמודה תיאור
מזהה תהליך מזהה התהליך הוא המזהה הייחודי של החיבור למסד הנתונים.
מזהה צומת מזהה הצומת הוא המזהה הייחודי של צומת המכונה של מאגר הקריאה שבו פועלת השאילתה.
שאילתה טקסט מנורמל של שאילתת SQL.
סטטוס הסטטוס הנוכחי של החיבור. ערכי הסטטוס כוללים את active ו-idle in transaction.
משך הסשן (שניות) משך הסשן הנוכחי.
משך העסקה (בשניות) משך העסקה הנוכחית.
משך השאילתה (בשניות) משך הזמן של השאילתה הפעילה הנוכחית. משך השאילתה לשאילתות במצב idle in transaction הוא 0 כי הן לא פועלות באופן פעיל.
סוג אירוע ההמתנה סוג אירוע ההמתנה שמתרחש במהלך הרצת השאילתה.
אירוע המתנה אירוע ההמתנה שמתרחש במהלך הרצת השאילתה.
מסד נתונים השם של מסד הנתונים שבו החיבור הזה פועל.
שם האפליקציה שם האפליקציה שבה החיבור הזה פועל.
שם משתמש השם של המשתמש שמחובר למסד הנתונים.
כתובת הלקוח כתובת IP ספציפית של הלקוח ששלח שאילתה.
פעולה מכיל קישור לביטול עסקה.

התצוגה מתרעננת אוטומטית כל 60 שניות.

שימוש בשדות Database ו-User לסינון מרענן את הנתונים בדף.

כדי לנתח נתונים סטטיים, משביתים את האפשרות Auto-refresh ומשתמשים בשדה Filter בטבלה Longest running transactions לפי הצורך.

סיום שאילתה או עסקה

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

טרנזקציה יכולה להכיל כמה שאילתות. כדי לזהות אילו מהשאילתות פעילות כרגע, עיינו בעמודה Query בטבלה Longest running transaction.

כדי לסיים שאילתה או טרנזקציה:

  1. בוחרים את השאילתה בטבלה Longest running transaction.
  2. גוללים שמאלה לעמודה פעולה.
  3. לוחצים על סיום החיבור.
  4. בחלון סיום החיבור, לוחצים על אישור.

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

ניתוח שאילתות חסומות

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

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

זיהוי וסיום של שאילתה פעילה חסומה

כדי לזהות ולסיים שאילתה פעילה ספציפית שעלולה לחסום שאילתות אחרות, בצעו את הפעולות הבאות:

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

    כניסה ל-AlloyDB

  2. לוחצים על שם האשכול כדי לפתוח את הדף Overview שלו.

  3. לוחצים על הכרטיסייה Query insights.

  4. לוחצים על הכרטיסייה Active queries. אם אין לכם שאילתות פעילות, נכנסים ל-AlloyDB Studio ומריצים את השאילתות שרוצים לחקור.

  5. עוברים לקטע Longest running transactions. בכל קטגוריה אפשר לראות עד 50 שאילתות פעילות שרצות במשך זמן רב. כל רשומה שמוצגת כוללת את פרטי השאילתה הפעילה, כולל:

    • ‫Process ID: מזהה התהליך של השאילתה. לוחצים על expand כדי להציג את הרשומה. יכול להיות שיופיע אחד משני הסמלים הבאים:
      • סמל של שעון חול: הסמל הזה מציין שהתהליך ממתין לסיום של שאילתה אחרת. אם מופיע מספר לצד הסמל, הוא מציין כמה שאילתות תלויות ממתינות לסיום התהליך.
      • סמל החסימה: הסמל הזה מציין שהתהליך חוסם שאילתות אחרות.
    • ‫Query: השאילתה שפועלת, כמו SELECT ... או UPDATE ....
    • סטטוס: הסטטוס של השאילתה הפעילה, למשל ACTIVE.
    • משך הסשן (שניות): משך הסשן הנוכחי.
    • משך העסקה (בשניות): משך העסקה הפעילה הנוכחית.
    • ‫Query duration (seconds): משך הזמן של השאילתה הפעילה הנוכחית.
    • סוג אירוע ההמתנה: סוג אירוע ההמתנה הנוכחי במהלך הרצת השאילתה, כמו Timeout או Lock.
    • אירוע המתנה: אירוע ההמתנה הנוכחי במהלך הרצת השאילתה.
    • מסד נתונים: השם של מסד הנתונים שבו החיבור פועל.
    • שם האפליקציה: שם האפליקציה שבה החיבור פועל.
    • שם משתמש: השם של משתמש מסד הנתונים שמחובר למסד הנתונים.
    • כתובת הלקוח: כתובת ה-IP של הלקוח ששלח את השאילתה.
    • פעולה: פעולות אפשריות, כמו סיום החיבור.

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

  6. מזהים את השאילתה הספציפית שנחסמה ולוחצים על Terminate connection. אחרי שמסיימים את החיבור, אפשר לעבור אל AlloyDB Studio כדי להריץ שוב את השאילתות הפעילות.

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