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

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

יצירת פרופיל

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

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

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

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

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

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

מהירות

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

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

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

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

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

הנכס Permission Denied לא נכלל בדוח Broadcast Speed.

רוחב פס

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

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

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

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

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

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

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

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

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

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

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

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

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

firebase database:profile --raw

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

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

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

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

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

מידע נוסף על הבנת החשבון והערכת הסכום לתשלום