פרופיל מסד הנתונים שלך

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

יצירת פרופיל

  1. לפני שמתחילים ליצור פרופיל של Firebase Realtime Database, צריך לוודא שמשתמשים בגרסה העדכנית ביותר של CLI של Firebase ושאתחלתם אותו למסד הנתונים ולפרויקט שרוצים ליצור להם פרופיל. חשוב לזכור: כדי ליצור פרופיל, צריכה להיות לכם הרשאת עריכה או הרשאת בעלים בפרויקט.

  2. מתחילים ליצור פרופיל של מסד הנתונים באמצעות הפקודה הבאה:

    firebase database:profile
    כלי הניתוח מציג הודעת סטטוס בזמן שהוא מתעד את הפעולות ממסד הנתונים ויוצר את הפרופיל.

  3. מקישים על Enter כדי להשלים את הפרופיל ולהציג את התוצאות.

פירוש התוצאות

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

מהירות

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

הדוח 'מהירות' כולל את המאפיינים הבאים:

  • נתיב: הנתיב במסד הנתונים שבו בוצעו הפעולות. אם יש יותר מ-25 צמתים צאצאים, כלי הניתוח יארגן אותם לנתיב הורה ויוסיף את הסמן $wildcard. יכול להיות שתראו בדוח את ספריית השורש של מסד הנתונים, שמיוצגת על ידי קו נטוי קדימה /.
  • ספירה: מספר הפעולות שהתרחשו בנתיב הנתון.
  • מהירות ביצוע ממוצעת: משך הזמן הממוצע שלוקח לשרת להריץ את הלוגיקה העסקית הנדרשת כדי לטפל בסוג הפעולה הספציפי באותו נתיב. מרווח הזמן שנמדד כאן מתחיל אחרי מרווח הזמן שנמדד לפי 'זמן ההמתנה הממוצע' שמתואר בהמשך.
  • זמן ההמתנה הממוצע: משך הזמן הממוצע שבו הבקשות נמצאות בתור לפני שהן מתבצעות. העיכוב הזה נפוץ בכל הבקשות שהלקוח יזם. זמן האחזור הכולל של בקשה בצד השרת הוא בערך הסכום של זמן ההמתנה של הבקשה ושל מהירות הביצוע שלה.
  • Permission Denied: מספר הפעולות בנתיב הנתון שנחסמו על ידי כללי מסד הנתונים של Firebase במסד הנתונים.
דוח מהירות לפי סוג פעולה
מהירות ביצוע הקריאה זמן התגובה של השרת לבקשות של לקוחות לקרוא נתונים ממסד הנתונים. בדרך כלל, זמן הביצוע של קריאה משתנה בהתאם לכמות הנתונים שנקראים, אבל גם קריאות קטנות מסוימות עשויות להתעכב בגלל אחסון מראש של נתונים במטמון.
מהירות ביצוע הכתיבה זמן התגובה של השרת לבקשות של לקוחות לכתוב נתונים למסד הנתונים. זמן הביצוע משתנה בהתאם לכמות הנתונים שנכתבים.
מהירות הביצוע של Connect זמן התגובה של השרת לבקשות ליצירת קשר עם לקוחות של מסדי נתונים. זמן האחזור של בקשות החיבור מושפע בעיקר מהנהלת חשבונות בצד השרת שמתבצעת בזיכרון, שקשורה לניהול החיבורים.
מהירות ההרצה של השידור

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

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

הערך Permission Denied לא נכלל בדוח 'מהירות השידור'.

רוחב פס

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

הדוח 'רוחב פס' כולל את המאפיינים הבאים:

  • נתיב: הנתיב במסד הנתונים שבו בוצעו הפעולות. אם יש יותר מ-25 צמתים צאצאים, כלי הניתוח יארגן אותם לנתיב הורה.

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

  • ספירה: מספר הפעולות שהתרחשו בנתיב הנתון.

  • ממוצע: המספר הממוצע של הבייטים שהורדתם או העליתם בכל הפעולות בנתיב הנתון (בייטים/כתיבה או בייטים/קריאה).

דוח רוחב פס
בייטים שהורדו נתונים שנצרכו באמצעות פעולות קריאה ושידור שנשלחו דרך ה-SDK של הלקוח ו-API ל-REST.
בייטים שהעליתם נתונים שנצרכו באמצעות בקשות כתיבה שמגיעות לשרת מסדי הנתונים. מחיקה מופיעה ככתיבה עם 0 בייטים בקטע 'נכנס'.

שאילתות שלא נוספו לאינדקס

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

בדוח 'שאילתות שלא נוספו לאינדקס' מוצגים המאפיינים הבאים:

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

יצירת פרופילים מתקדמים

כדי לראות את כל הפעולות שהמסד הנתונים מטפל בהן, משתמשים בדגל --raw כשמגדירים פרופיל למסד הנתונים, באופן הבא:

firebase database:profile --raw

הפלט הגולמי כולל גם את פרטי הלקוח לכל פעולה, כמו מחרוזות userAgent וכתובות IP. מידע נוסף על הפעולות השונות שמתועדות ב-Firebase Realtime Database זמין במאמר סוגי פעולות ב-Firebase Realtime Database.

הכלי לניתוח פרופיל: לא כלי לחיוב

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

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

  • עומס יתר של פרוטוקול: כדי ליצור סשן ולתחזק אותו, נדרשת תנועה נוספת מסוימת בין השרת ללקוחות. בהתאם לפרוטוקול הבסיסי, התנועה הזו עשויה לכלול: תקורה של פרוטוקול בזמן אמת של Firebase Realtime Database, תקורה של WebSocket ותקורה של כותרת HTTP. בכל פעם שנוצר חיבור, העלויות האלה, בשילוב עם עלויות הצפנת ה-SSL, מוסיפות לעלות החיבור. בדרך כלל מדובר בכמות קטנה של רוחב פס, אבל היא יכולה להיות משמעותית אם עומסי התעבורה קטנים או אם אתם יוצרים חיבורים קצרים ותדירים.
  • העלות הנוספת של הצפנת SSL: יש עלות שקשורה להעלות הנוספת של הצפנת SSL שנדרשת לחיבורים מאובטחים. העלות הממוצעת היא כ-3.5KB לחיצת היד הראשונית וכ-40B לכותרות של רשומות TLS בכל הודעה יוצאת. ברוב האפליקציות, זהו אחוז קטן מהחשבון. עם זאת, אם במקרה הספציפי שלכם נדרשים הרבה לחיצות יד של SSL, האחוז הזה עשוי להיות גבוה. לדוגמה, במכשירים שלא תומכים בכרטיסי סשן של TLS, יכול להיות שיהיה צורך במספר גדול של לחיצות יד לחיבור SSL.

מידע נוסף על הבנת החשבונית ועל חישוב שלה