דפוסי מפת חום למקשי אינדקס

בדף הזה מוצגות דוגמאות לדפוסים שאפשר לראות במפת חום של Key Visualizer. הדפוסים האלה יכולים לעזור לכם לפתור בעיות ספציפיות בביצועים.

דרישות לגבי מהדורה ומצב

המסמך הזה רלוונטי למהדורת Firestore Standard ב-Firestore במצב Native.

חלוקת שימוש שווה

מפת חום שמוצגים בה קריאות וכתיבות שמתפלגות באופן שווה

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

מדדים במקשים עוקבים

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

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

התחממות יתר בגלל חותמת זמן גדלה

מפת חום שבה מוצגות נקודות חמות בגלל עלייה בחותמת הזמן

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

התופעה של נקודות חמות בגלל עלייה במספר שמות הנכסים

מפת חום שבה מוצגת התחממות יתר בגלל עלייה בנכס

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

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

הסבר על מבנה מפתח האינדקס

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

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

NAMESPACE: NS KIND: Users 
PROPERTIES: (Timestamp: DESC, Name: DESC)
ANCESTOR: KEY(PROJECT('PROJECT_ID'),NAMESPACE('NS'),`UserList`,1)
VALUES: (16500000000000001,'Alice')
ENTITY:KEY(PROJECT('PROJECT_ID'),NAMESPACE(''),`UserList`,1,`User`,5000000000000001)

כאשר:

  • NAMESPACE: מרחב השמות של הישות.
  • KIND: kind של ישות שמסווגת את הישויות.
  • מאפיינים: מאפיינים שקשורים לישות. המאפיין __key__ ordering מוצג רק בהגדרות של אינדקסים שמשנים את סדר ברירת המחדל.
  • ANCESTOR: אופציונלי ancestor path לאיתור הישות בהיררכיית מסד הנתונים.
  • VALUES: הערך של כל מאפיין.
  • ENTITY: המזהה של הישות שעודכנה בפעולה.

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

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

  1. נכנסים לדף Datastore mode Indexes במסוף Google Cloud .

    מעבר אל אינדקסים של מצב Datastore

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

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

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

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

  • אינדקס מובנה: אפשר להחריג את המאפיין כך שהאינדקס לא יכלול רשומות אינדקס עבור המאפיין הזה. מידע נוסף זמין במאמר בנושא מאפיינים מוחרגים.
  • אינדקס מורכב: אפשר לשנות את האינדקס בקובץ index.yaml כדי לוודא שהשדה שהערך שלו עולה או יורד באופן מונוטוני לא נבחר כשדה הראשון לאינדקס, או למחוק את האינדקס. מידע נוסף זמין במאמר בנושא קובץ index.yaml.

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

סוג תיאור דוגמה
רשומה מובנית באינדקס רשומה באינדקס של מאפיין יחיד במאפיין Timestamp, בסדר יורד במרחב השמות NS. NAMESPACE: NS
KIND: Users
PROPERTIES: (Timestamp: DESC)
ANCESTOR: NONE
VALUES: (16500000000000001)
ENTITY: KEY(PROJECT('PROJECT_ID'), NAMESPACE('NS'),משתמשים, 5000000000000001)
רשומה מובנית באינדקס רשומה באינדקס של מאפיין יחיד במרחב השמות שמוגדר כברירת מחדל. NAMESPACE: ' '
KIND: Users
PROPERTIES: (Timestamp: DESC)
ANCESTOR: NONE
VALUES: (16500000000000001)
ENTITY: KEY(PROJECT('PROJECT_ID'), NAMESPACE('NS'),משתמשים, 5000000000000001)
רשומה של אינדקס מורכב רשומה באינדקס עבור האינדקס המורכב במאפיין Timestamp ובמאפיין Name בסדר יורד ללא הפעלת מאפיין הצאצא. NAMESPACE: NS
KIND: Users
PROPERTIES: (Timestamp: DESC, Name: DESC)
ANCESTOR: NONE
VALUES: (16500000000000001, 'Alice')
ENTITY: KEY(PROJECT('PROJECT_ID'),NAMESPACE('NS'),משתמשים,5000000000000001)
רשומה של אינדקס מורכב עם צאצא ערך אינדקס לאינדקס המורכב במאפיין Timestamp בסדר יורד ובמאפיין Name בסדר יורד עם הפעלת ישות אב. NAMESPACE: NS
KIND: Users
PROPERTIES: (Timestamp: DESC, Name: ASC)
ANCESTOR: KEY(PROJECT('PROJECT_ID'),NAMESPACE('NS'),UserList,1,User,5000000000000001
VALUES: (16500000000000001, 'Alice')
ENTITY: KEY(PROJECT('PROJECT_ID'),NAMESPACE('NS'),UserList,1,User,5000000000000001)
רשומה של אינדקס מורכב עם __key__ רשומה באינדקס של האינדקס המורכב במאפיין Timestamp בסדר עולה ובמאפיין __key__ בסדר יורד, ללא הפעלה של ancestor. אפשר להשתמש ב-__key__ כמאפיין האחרון בהגדרת אינדקס כדי לשנות את סדר ברירת המחדל של התוצאות. NAMESPACE: NS
KIND: Users
PROPERTIES: (Timestamp: ASC, __key__ DESC)
ANCESTOR: NONE
VALUES: (16500000000000001)
ENTITY: KEY(PROJECT('PROJECT_ID'),NAMESPACE('NS'),UserList,1,User,5000000000000001)

המאמרים הבאים