כשמשווים את הביצועים, חשוב להגדיר מראש מה אתם רוצים ללמוד מהבדיקה. לדוגמה:
- מה התפוקה המקסימלית שהמערכת יכולה להשיג?
- כמה זמן נמשכת שאילתה או עומס עבודה מסוימים?
- איך הביצועים משתנים ככל שכמות הנתונים גדלה?
- איך משווים בין הביצועים של שתי מערכות שונות?
- בכמה זמן מנוע העמודות מקצר את זמן התגובה של ביצועי השאילתות?
- כמה עומס יכול מסד נתונים לשאת לפני שצריך לשקול שדרוג למכונה חזקה יותר?
הבנת היעדים של מחקר הביצועים עוזרת להבין איזה מדד השוואה צריך להריץ, איזו סביבה נדרשת ואילו מדדים צריך לאסוף.
יכולת חזרה
כדי להסיק מסקנות מבדיקות ביצועים, התוצאות של הבדיקות צריכות להיות ניתנות לשחזור. אם יש שונות רבה בתוצאות הבדיקות, יהיה קשה להעריך את ההשפעה של השינויים שביצעתם באפליקציה או בהגדרת המערכת. כדי להקטין את השונות, אפשר להריץ את הבדיקות כמה פעמים או לתקופות ארוכות יותר כדי לקבל יותר נתונים.
מומלץ להריץ בדיקות ביצועים במערכות שמבודדות ממערכות אחרות. הפעלה בסביבה שבה מערכות חיצוניות יכולות להשפיע על הביצועים של האפליקציה עלולה להוביל למסקנות שגויות. בידוד מלא לרוב לא אפשרי כשמריצים בסביבת ענן עם מספר דיירים, ולכן צפויים שינויים גדולים יותר בתוצאות
כדי להבטיח את היכולת לשחזר את התוצאות, צריך לוודא שעומס העבודה של הבדיקה נשאר זהה בין הרצות. אפשר להכניס קצת אקראיות לקלט של הבדיקה, כל עוד האקראיות לא גורמת להתנהגות שונה באופן משמעותי של האפליקציה. אם קלט הלקוח שנוצר באופן אקראי משנה את השילוב של פעולות הקריאה והכתיבה בין הרצות, הביצועים ישתנו באופן משמעותי.
גודל מסד הנתונים, שמירה במטמון ודפוסי קלט/פלט
חשוב לוודא שכמות הנתונים שאתם בודקים מייצגת את האפליקציה שלכם. אם תריצו בדיקות עם כמות קטנה של נתונים כשיש לכם מאות גיגה-בייט או טרה-בייט של נתונים, סביר להניח שלא תקבלו ייצוג אמיתי של הביצועים של האפליקציה. גם לגודל של מערך הנתונים יש השפעה על הבחירות שמבצע אופטימיזציית השאילתות. שאילתות שמופעלות על טבלאות בדיקה קטנות עשויות להשתמש בסריקות של טבלאות שנותנות ביצועים נמוכים בקנה מידה גדול יותר, ולא תוכלו לזהות אינדקסים חסרים בהגדרה הזו.
חשוב לשאוף לשכפל את דפוסי הקלט/פלט של האפליקציה. היחס בין פעולות קריאה לפעולות כתיבה חשוב לפרופיל הביצועים של האפליקציה.
משך הזמן להשוואה
במערכת מורכבת, יש הרבה נתוני מצב שנשמרים בזמן שהמערכת פועלת: נוצרים חיבורים למסד נתונים, המטמון מתמלא, נוצרים תהליכים ושרשורים. בתחילת בדיקת ביצועים, האתחול של הרכיבים האלה עלול לצרוך משאבי מערכת ולהשפיע לרעה על הביצועים שנמדדים אם זמן הריצה של עומס העבודה קצר מדי.
מומלץ להריץ בדיקות ביצועים למשך 20 דקות לפחות כדי למזער את ההשפעות של חימום המערכת. חשוב למדוד את הביצועים במהלך מצב יציב אחרי ההפעלה, ולמשך זמן מספיק כדי לוודא שכל ההיבטים של פעולות מסד הנתונים כלולים. לדוגמה, נקודות ביקורת במסד נתונים הן תכונה קריטית של מערכות מסדי נתונים, ויכולה להיות להן השפעה משמעותית על הביצועים. אם מריצים מדד ביצועים קצר שמושלם לפני מרווח נקודות הבדיקה, הגורם החשוב הזה לא יופיע בהתנהגות של האפליקציה.
בדיקה שיטתית
כשמשפרים את הביצועים, כדאי לשנות רק משתנה אחד בכל פעם. אם משנים כמה משתנים בין הרצות, לא ניתן לבודד את המשתנה ששיפר את הביצועים. למעשה, יכול להיות ששינויים שונים יבטלו זה את זה, כך שלא תראו את היתרון של שינוי מתאים. אם השרת של מסד הנתונים נמצא בשימוש יתר, נסו לעבור למכונה עם יותר ליבות וירטואליות (vCPU) תוך שמירה על עומס קבוע. אם הניצול של שרת מסד הנתונים נמוך, כדאי לנסות להגדיל את העומס תוך שמירה על הגדרת ה-CPU.
טופולוגיה וזמני אחזור ברשת
טופולוגיית הרשת של המערכת יכולה להשפיע על תוצאות בדיקת הביצועים. ההשהיה בין האזורים שונה. כשמבצעים בדיקות ביצועים, חשוב לוודא שהלקוח ואשכול מסד הנתונים נמצאים באותו אזור כדי למזער את זמן האחזור ברשת ולהשיג את הביצועים הטובים ביותר – במיוחד באפליקציות עם תפוקה גבוהה ועסקאות קצרות, כי זמן האחזור ברשת יכול להיות רכיב משמעותי בזמן התגובה הכולל של העסקה.
כשמשווים בין הביצועים של שתי מערכות שונות, חשוב לוודא שהטופולוגיה של הרשת זהה בשתי המערכות. חשוב לזכור שאי אפשר לבטל לחלוטין את השונות בזמן האחזור ברשת, גם באותו אזור יכולים להיות הבדלים בזמן האחזור בגלל טופולוגיות רשת בסיסיות.
כשפורסים את האפליקציה, כדאי להבין טוב יותר את ההשפעה של זמני האחזור בין אזורים. לשם כך, אפשר להשתמש באפליקציית אינטרנט טיפוסית עם נפח תנועה גבוה. לאפליקציה יש מאזן עומסים ששולח בקשות לכמה שרתי אינטרנט שנפרסו בכמה אזורים כדי להבטיח זמינות גבוהה. זמני האחזור עשויים להיות שונים בהתאם לשרת האינטרנט שמטפל בבקשה, בגלל הבדלים בזמני האחזור בין אזורים.
באיור הבא מוצגת הארכיטקטורה האופיינית של אפליקציית אינטרנט שמשתמשת ב-AlloyDB Omni. בקשות של לקוחות מטופלות על ידי מאזן עומסים, שמעביר כל בקשה לאחד מתוך הרבה שרתי אינטרנט. כל שרתי האינטרנט מחוברים ל-AlloyDB Omni. חלק מהשרתים נמצאים באזור שונה מזה שבו פועל AlloyDB Omni, ולכן זמן האחזור יהיה ארוך יותר כשמתבצעות בקשות למסד הנתונים.
מעקב אחרי ניצול המשאבים במערכת
כדי לשפר את הביצועים של מערכת מסד הנתונים, צריך לעקוב אחרי השימוש במשאבים של מערכת מסד הנתונים ושל מערכות הלקוח שמשתמשות במערכת מסד הנתונים. באמצעות מעקב אחרי שתי המערכות, תוכלו לוודא שמערכות הלקוח מספקות עומס עבודה מספיק כדי לקבל מדידות משמעותיות במערכת מסד הנתונים. חשוב מאוד לעקוב אחרי ניצול המשאבים של המערכת שאתם בודקים. חשוב באותה מידה לעקוב אחרי ניצול המשאבים של מערכות הלקוח שבהן אתם משתמשים כדי להפעיל את עומס העבודה. לדוגמה, אם רוצים לקבוע את המספר המקסימלי של לקוחות שמערכת מסד הנתונים יכולה לתמוך בהם לפני שנגמרים משאבי ה-CPU, צריך מספיק מערכות לקוח כדי ליצור את עומס העבודה שנדרש לניצול כל משאבי ה-CPU במערכת מסד הנתונים. לא תוכלו להעמיס על מערכת מסד הנתונים אם למכונות הלקוח שמייצרות עומס אין מספיק CPU.
בדיקות מדרגיות
בדיקות מדרגיות הן היבט נוסף של בדיקות ביצועים. מדרגיות מתייחסת לשינוי במדדי הביצועים כתוצאה משינוי במאפיין של עומס העבודה. הנה כמה דוגמאות למחקרים בנושא מדרגיות:
- איך עלייה במספר הבקשות בו-זמנית משפיעה על קצב העברת הנתונים ועל זמני התגובה?
- איך הגדלת גודל מסד הנתונים משנה את קצב העברת הנתונים ואת זמני התגובה?
בדיקות מדרגיות מורכבות מכמה הרצות של עומס עבודה, שבהן משנים מאפיין יחיד בין ההרצות ואוספים ומשרטטים מדד אחד או יותר. סוג הבדיקה הזה מספק מידע לגבי צווארי בקבוק שקיימים במערכת, עומס העבודה שהמערכת יכולה לטפל בו בהינתן תצורה ספציפית, עומס העבודה המקסימלי שהמערכת יכולה לתמוך בו וההתנהגות של המערכת כשהעומס עולה מעבר לרמות האלה.
שיקולים לגבי גודל המכונה
AlloyDB Omni מציג הרבה תכונות חדשות ל-Postgres כדי לשפר את המהימנות והזמינות של מסד הנתונים. המעקב שנדרש כדי לעשות את זה משתמש במשאבים במכונה שבה פועל AlloyDB Omni. במכונות קטנות מאוד יש מלכתחילה משאבי זיכרון ומעבד מוגבלים, ולכן לצורך השוואה, מומלץ להשתמש במכונות עם לפחות ארבעה מעבדים וירטואליים.