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

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

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

איך זה עובד

מזהה עסקה מוקצה כשהעסקה מתחילה, והוא קפוא עד שהעסקה עוברת תהליך של vacuum. השימוש במזהה עסקה הוא מספר העסקאות שלא נמחקו (שהוקצו פחות הקפואות) שמוצג כשבר מתוך הערך המקסימלי של 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, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאה serviceusage.services.enable. איך מקצים תפקידים

    להפעלת ה-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%.
תת-סוג: POSTGRES_HIGH_TRANSACTION_ID_UTILIZATION
למנוע מצב שבו מזהה העסקה חוזר לתחילת הטווח במכונות Cloud SQL.
תת-סוג: POSTGRES_HIGH_TRANSACTION_ID_UTILIZATION_BEST_PRACTICE

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

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

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

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

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

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

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

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

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

מידע נוסף זמין גם בפוסט בבלוג 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%

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