מניעת מצב שבו מזהה העסקה חוזר לתחילת הרצף

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

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

איך זה עובד

מזהה עסקה מוקצה כשהעסקה מתחילה, והוא קפוא עד שהעסקה עוברת דחיסה. המדד 'ניצול מזהה עסקה' הוא מספר העסקאות שלא נמחקו (שהוקצו פחות אלה שהוקפאו), שמוצג כשבר מתוך הערך המקסימלי של 2 מיליארד. בהגדרות ברירת המחדל של PostgreSQL, כשתהליכי ה-vacuum מתבצעים בצורה אופטימלית וללא הפרעה, ברוב מסדי הנתונים מתבצע ניצול של מזהי העסקאות באזור של כ-10%. אפשר לראות רמות גבוהות יותר של ניצול מזהי עסקאות במסדי נתונים עמוסים שבהם עומסי עבודה רגילים מקבלים לעיתים קרובות עדיפות על פני פעולת ה-vacuum. אם מגמת השימוש במזהי העסקאות היא של ערכים גבוהים מאוד (80% ומעלה), יכול להיות שהמסד נתונים נמצא בסיכון של מיצוי מזהי העסקאות. שימוש במזהה עסקה שמגיע ל-100% נקרא מעבר של מזהה עסקה. אחרי שאחוז הניצול של מזהה הטרנזקציה מגיע ל-100%, מערכת PostgreSQL מפסיקה לקבל שאילתות כתיבה.

שירות ההמלצות לניצול גבוה של מזהי טרנזקציות ב-Cloud SQL מנתח את הניצול של מזהי טרנזקציות במכונה של Cloud SQL ל-PostgreSQL.

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

תמחור

ההמלצות לשימוש במזהי טרנזקציות ב-Cloud SQL זמינות ברמת התמחור Standard של Recommender.

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

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

  • כדי לקבל את ההרשאות לצפייה בתובנות ובהמלצות ולעבודה איתן, צריך לוודא שיש לכם את התפקידים הנדרשים.
    Tasks תפקידים
    לצפייה בהמלצות אחד מהתפקידים הבאים: recommender.cloudsqlViewer או cloudsql.viewer.
    יישום ההמלצות אחד מהתפקידים האלה: recommender.cloudsqlAdmin,‏ cloudsql.editor או cloudsql.admin.
    מידע נוסף על תפקידים זמין במאמרים הסבר על תפקידים ומתן הרשאות IAM.
  • מפעילים את Recommender API, אם הוא עדיין לא מופעל.

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, צריך את ההרשאה serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים

    להפעלת ה-API

רשימת המלצות לשיפור הביצועים של מופע

אפשר לראות את ההמלצות לשיפור הביצועים של מופע באמצעות Google Cloud המסוף, gcloud CLI או Recommender API.

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

המסוף

כדי להציג רשימת המלצות לגבי ביצועי מכונה באמצעות מסוףGoogle Cloud , פועלים לפי השלבים הבאים:

  1. נכנסים לדף Cloud SQL Instances.

    כניסה לדף Cloud SQL Instances

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

אפשר גם לפעול לפי השלבים הבאים:

  1. עוברים אל Active Assist. מומלץ לעיין גם במאמר איך מתחילים להשתמש בדף ההמלצות.

    כניסה לדף Active Assist

  2. בכרטיס Improve Cloud SQL Instance Performance (שיפור הביצועים של מכונת Cloud SQL), לוחצים על View all (הצגת הכול).

  3. בוחרים את המקרים עם ההמלצה Prevent transaction ID wraparound (מניעת חזרה למספור התחלתי של מזהי עסקאות).

‫CLI של gcloud

כדי להציג רשימה של המלצות לשיפור הביצועים של המכונה באמצעות gcloud CLI, מריצים את הפקודה gcloud recommender recommendations list באופן הבא:

gcloud recommender recommendations list \
--project=PROJECT_ID \
--location=LOCATION \
--recommender=google.cloudsql.instance.PerformanceRecommender \
--filter=recommenderSubtype=POSTGRES_HIGH_TRANSACTION_ID_UTILIZATION_BEST_PRACTICE

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

  • ‫PROJECT_ID: מזהה הפרויקט
  • ‫LOCATION: אזור, כמו us-central1

API

כדי להציג רשימה של המלצות לשיפור הביצועים של מופע באמצעות Recommendations API, מפעילים את method‏ recommendations.list באופן הבא:

GET https://recommender.googleapis.com/v1beta1/projects/PROJECT-ID/locations/LOCATION/recommenders/google.cloudsql.instance.PerformanceRecommender.PostgresHighTransactionIdUtilizationBestPractice/recommendations

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

  • ‫PROJECT_ID: מזהה הפרויקט.
  • ‫LOCATION: אזור, כמו us-central1.

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

צפייה בתובנות ובהמלצות מפורטות

אפשר לראות תובנות והמלצות מפורטות לגבי מקרים שבהם מזהה העסקה מתקרב למקסימום האפשרי באמצעות המסוף Google Cloud , gcloud CLI או Recommender API.

המסוף

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

‫CLI של gcloud

כדי לראות תובנות והמלצות מפורטות לגבי מקרים שקרובים לסף הביצועים באמצעות gcloud CLI, מריצים את הפקודה gcloud recommender insights list באופן הבא:

gcloud recommender insights list \
--project=PROJECT_ID \
--location=LOCATION \
--insight-type=google.cloudsql.instance.PerformanceInsight \
--filter=insightSubtype=POSTGRES_HIGH_TRANSACTION_ID_UTILIZATION

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

  • ‫PROJECT_ID: מזהה הפרויקט.
  • ‫LOCATION: אזור, כמו us-central1.

API

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

GET https://recommender.googleapis.com/v1beta1/projects/PROJECT-ID/locations/LOCATION/insightTypes/google.cloudsql.instance.PerformanceRecommender.PostgresHighTransactionIdUtilization/insights

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

  • ‫PROJECT_ID: מזהה הפרויקט.
  • ‫LOCATION: אזור, כמו us-central1.

בטבלה הבאה מפורטים התובנות וההמלצות שנוצרות על ידי הכלי להמלצות לשימוש גבוה במזהי עסקאות ב-Cloud SQL. סוגי המשנה מוצגים בתוצאות של gcloud CLI ושל ה-API.

תובנה המלצה
אחוז הניצול של מזהה העסקה במופע הזה גבוה וקרוב ל-100%.
Subtype: POSTGRES_HIGH_TRANSACTION_ID_UTILIZATION
כדי למנוע מצב שבו מזהה העסקה יחזור לתחילת הטווח במכונות Cloud SQL.
Subtype: POSTGRES_HIGH_TRANSACTION_ID_UTILIZATION_BEST_PRACTICE

יישום ההמלצות

בודקים את ההמלצות בקפידה ומבצעים אחת מהפעולות הבאות:

אופטימיזציה של הביצועים של המופע

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

  1. מאתרים את מסד הנתונים והטבלה שגורמים לבעיה.

  2. בודקים ומפרשים את מדדי השימוש במזהה העסקה במופעי מסד הנתונים.

  3. בודקים אם יש מזהה עסקה תקוע.

  4. הסרת חסימות של VACUUM.

  5. בדיקה של מהירות ה-VACUUM והאצת התהליך

מידע נוסף זמין גם בפוסט בבלוג Using VACUUM to accelerate transaction ID freezing in Cloud SQL for PostgreSQL (שימוש ב-VACUUM כדי להאיץ את הקפאת מזהי העסקאות ב-Cloud SQL ל-PostgreSQL).

מניעת גלישת מזהה העסקה

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

SELECT * FROM google_vacuum_mgmt.pg_fix_wraparound();

פלט לדוגמה:

postgres=> select * from google_vacuum_mgmt.pg_fix_wraparound();
-[ RECORD 1 ]-----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
issue_description | Cloud SQL for PostgreSQL has detected an open prepared transaction on your instance which is blocking VACUUM. Monitor the transaction ID utilization and commit or rollback the transaction, as needed.
query             | ROLLBACK PREPARED 'trx_id_pin'; or COMMIT PREPARED 'trx_id_pin';
recommendation    | To commit a prepared transaction, you must be connected as the same user that originally executed the transaction: postgres
insights          | Transaction ID Utilization: 88.49%

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