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

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

יצירת פרופיל

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

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

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

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

פרש את התוצאות שלך

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

מהירות

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

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

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

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

המאפיין 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, תקורת WebSocket ותקורה של כותרות HTTP. בכל פעם שנוצר חיבור, העלויות האלה, בשילוב עם עלויות הצפנת ה-SSL, מוסיפות לעלות החיבור. בדרך כלל מדובר בכמות קטנה של רוחב פס, אבל היא יכולה להיות גדולה אם עומסי העבודה שלכם קטנים או אם אתם יוצרים חיבורים קצרים ותדירים.
  • העלות הנוספת של הצפנת SSL: יש עלות שקשורה להעלות הנוספת של הצפנת SSL שנדרשת לחיבורים מאובטחים. העלות הממוצעת היא כ-3.5KB לחיצת היד הראשונית וכ-40B לכותרות של רשומות TLS בכל הודעה יוצאת. ברוב האפליקציות, זהו אחוז קטן מהחשבון. עם זאת, אם במקרה הספציפי שלכם נדרשים הרבה לחיצות יד של SSL, האחוז הזה יכול להיות גבוה. לדוגמה, במכשירים שלא תומכים בכרטיסי סשן של TLS, יכול להיות שיהיה צורך במספר גדול של לחיצות יד לחיבור SSL.

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