כדי לעזור לכם להבין, לשפר ולאבחן בעיות בעסקאות, Spanner מאפשר לכם לגשת לנתונים סטטיסטיים של אישור עסקאות. בשלב הזה, אפשר לאחזר את המספר הכולל של שינויים בעסקה.
מתי כדאי להשתמש בנתוני סטטוס של שליחת שינויים
הידיעה כמה מוטציות יש לטרנזקציה יכולה להיות שימושית בתרחישים הבאים.
אופטימיזציה של נסיעות הלוך ושוב
כדי לשפר את הביצועים של האפליקציה, אפשר לצמצם את מספר הנסיעות הלוך ושוב למסד הנתונים על ידי ביצוע כמה שיותר פעולות בכל טרנזקציה. במקרה כזה, כדאי להגדיל את מספר המוטציות לכל טרנזקציה, תוך שמירה על מגבלות המערכת.
כדי לקבוע כמה שורות אפשר לבצע בכל טרנזקציה בלי לחרוג מהמגבלה, קודם צריך לבצע שורה אחת בטרנזקציה. כך מקבלים קו בסיס של מספר המוטציות לכל שורה. לאחר מכן מחלקים את המגבלה של המערכת בערך הבסיסי כדי לקבל את מספר השורות לכל עסקה. מידע נוסף על אופן הספירה של מוטציות זמין בהערה הזו.
חשוב לזכור: אופטימיזציה של נסיעות הלוך ושוב לא תמיד מועילה, במיוחד אם היא מובילה ליותר התנגשויות של נעילות. אפשר לפתור בעיות שקשורות לנעילות במסד הנתונים באמצעות נתונים סטטיסטיים על נעילות.
מעקב אחרי העסקאות כדי לא לחרוג ממגבלות המערכת
ככל שהשימוש באפליקציה גדל, יכול להיות שמספר השינויים בעסקה גדל גם הוא. כדי להימנע מהגעה למגבלת המערכת ומהמצב שבו העסקה תיכשל בסופו של דבר, אפשר לעקוב באופן יזום לאורך זמן אחרי נתון הסטטיסטיקה של מספר השינויים שבוצעו. אם אתם רואים שהערך הזה עולה עבור אותה עסקה, יכול להיות שהגיע הזמן לבצע אופטימיזציה מחדש של העסקה, כמו שמתואר בקטע הקודם.
איך ניגשים לסטטיסטיקות של פעולות Commit
כברירת מחדל, לא מוחזרת סטטיסטיקה של ביצוע פעולות Commit. במקום זאת, צריך להגדיר את הדגל return_commit_stats לערך true בכל CommitRequest. אם ניסיון השליחה חורג ממספר המוטציות המקסימלי המותר לעסקה, השליחה נכשלת ומוחזרת שגיאה מסוג INVALID_ARGUMENT.
הנה דוגמה להחזרת נתוני סטטיסטיקה של ביצוע פעולות באמצעות ספריות הלקוח של Spanner.
אחזור נתוני קומיטים
בדוגמה הבאה מוצג איך לקבל נתונים סטטיסטיים של ביצוע פעולות Commit באמצעות ספריות הלקוח של Spanner.
C++
הקוד הבא קורא ל-set_return_stats() ב-CommitOptions ומחזיר ספירה של 6 שינויים, כי אנחנו מוסיפים או מעדכנים 2 שורות ו-3 עמודות בכל שורה.
C#
ב-C#, נתוני קומיטים לא מוחזרים ישירות דרך ה-API. במקום זאת, הם נרשמים ברמת היומן Information על ידי היומן שמוגדר כברירת מחדל.
הקוד הבא מפעיל רישום ביומן של נתוני אישור לכל העסקאות על ידי הגדרת המאפיין LogCommitStats ב-SpannerConnectionStringBuilder לערך true. הקוד גם מטמיע כלי לרישום פעולות לדוגמה, ששומר הפניה לתגובת השליחה האחרונה. לאחר מכן, המערכת מאחזרת את MutationCount מהתשובה הזו ומציגה אותו.
Go
הקוד הבא מגדיר את הדגל ReturnCommitStats ומדפיס את מספר השינויים כשהעסקה מתבצעת בהצלחה.
Java
Node.js
הקוד הבא מגדיר את הדגל returnCommitStats ומחזיר ספירת מוטציות של 6, כי אנחנו מוסיפים או מעדכנים 2 שורות ו-3 עמודות בכל שורה.
PHP
Python
במקום להחזיר את נתוני השליחה ישירות דרך ה-API, ספריית הלקוח של Python מתעדת אותם באמצעות stdout ברמה Info.
הקוד הבא מאפשר רישום ביומן של נתונים סטטיסטיים לגבי ביצוע פעולות (commit) לכל העסקאות על ידי הגדרת database.log_commit_stats = True. הקוד גם מטמיע כלי לרישום ביומן לדוגמה, ששומר הפניה לתגובת השליחה האחרונה שנראתה. אחר כך, המערכת מאחזרת את mutation_count מהתשובה הזו ומציגה אותו.
Ruby
הקוד הבא מגדיר את הדגל return_commit_stats ומחזיר ספירת מוטציות של 6, כי אנחנו מוסיפים או מעדכנים 2 שורות ו-3 עמודות בכל שורה.