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

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

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

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

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

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

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

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

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

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

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

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

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

התופעה של נקודות חמות בגלל הגדלת שמות השדות

מפת חום שמראה אזורים חמים בגלל שדה הולך וגדל

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

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

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

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

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

COLLECTION: projects/PROJECT_ID/databases/(default)/documents/Users
  PROPERTIES: (Timestamp: DESC) 
  VALUES: (16500000000000001)
  DOCUMENT: projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001

כאשר:

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

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

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

  1. נכנסים לדף Databases במסוף Google Cloud .

    מעבר אל Databases

  2. בוחרים את מסד הנתונים הרצוי מתוך רשימת מסדי הנתונים.

  3. בתפריט הניווט, לוחצים על Indexes (אינדקסים).

  4. עוברים לכרטיסייה מורכב או לכרטיסייה שדה יחיד.

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

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

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

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

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

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

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

סוג תיאור דוגמה
אינדקסים של שדה יחיד בהיקף של אוסף בסדר עולה (ASC) או בסדר יורד (DESC) ‫Firestore יוצר אינדקסים עם היקף של אוסף כברירת מחדל.

רשומה באינדקס של אינדקס חד-שדה בשדה Timestamp, בסדר יורד עבור המסמך Users/5000000000000001.
COLLECTION: projects/PROJECT_ID/databases/(default)/documents/Users
PROPERTIES: (Timestamp: DESC)
VALUES: (16500000000000001)
DOCUMENT: projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001
אינדקסים של שדה יחיד בהיקף אוסף לשדות מסוג מערך לכל שדה מערך במסמך, Firestore יוצר ומנהל אינדקס מסוג array-contains בהיקף של אוסף.

רשומה באינדקס למצב array-contains של אינדקסים של שדה יחיד שייווצרו כששדה Country: [USA, Japan] יתווסף למסמך. שימו לב שגם אינדקסים של ASC ו-DESC ייווצרו כברירת מחדל בשדה הזה. בדוגמה מוצג אינדקס ASC בשדה Country.
COLLECTION: projects/PROJECT_ID/databases/(default)/documents/Users
PROPERTIES:(Country: ASC)
VALUES:([USA, Japan]) DOCUMENT:(projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001)
קבוצת אוספים, אינדקסים של שדה יחיד, ASC,‏ DESC,‏ ARRAY קבוצת אוספים כוללת את כל האוספים עם אותו מזהה אוסף.
רשומה באינדקס של קבוצת האוספים של האינדקס בשדה Timestamp, בסדר יורד.
COLLECTION GROUP: Users
PROPERTIES: (Timestamp: DESC)
VALUES: (16500000000000001L)
DOCUMENT: projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001
קבוצת אוספים, אינדקסים של שדה יחיד, ASC,‏ DESC,‏ ARRAY רשומה באינדקס של קבוצת האוספים של אינדקס עם שדה יחיד בשדה Country במצב array-contains COLLECTION GROUP: Users PROPERTIES: (Country: ARRAY ASC) VALUES: (USA) DOCUMENT: projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001
רשומה של אינדקס מורכב של אוסף עם מאפייני ASC,‏ ASC ו-ARRAY כשיוצרים מסמכים מוטמעים עם הגדרת אינדקס בהיקף אוסף, נוצרים רשומות של אינדקס מורכב עם הורה.

רשומת אינדקס לאינדקס מורכב עם השדות Timestamp ו-Name בסדר עולה, ו-Country במצב array-contains.
COLLECTION: projects/PROJECT_ID/databases/(default)/documents/Users
PROPERTIES: (Timestamp: ASC, Name: ASC,Country: ARRAY)
VALUES: (16500000000000001L, 'Alice', 'USA')
DOCUMENT: (projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001)
רשומה מורכבת של אינדקס בהיקף של קבוצת אוספים עם מאפייני ASC ו-ASC רשומה באינדקס של האינדקס המורכב בשדה Timestamp, בסדר עולה, ובשדה Name בסדר עולה COLLECTION GROUP: Users
PROPERTIES: (Timestamp: ASC, Name: ASC)
VALUES: (16500000000000001L, 'Alice')
DOCUMENT: (projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001)
רשומה מורכבת באינדקס של היקף האוסף עם מאפייני ASC ו-__name__ רשומה באינדקס של האינדקס המורכב בשדה Timestamp בסדר עולה, עם מיון __name__ בסדר יורד למסמך Users/5000000000000001. אפשר להשתמש ב-__name__ כשדה האחרון בהגדרת אינדקס כדי לשנות את סדר ברירת המחדל של התוצאות. COLLECTION: projects/PROJECT_ID/databases/(default)/documents/Users
PROPERTIES: (Timestamp: ASC, __name__ DESC)
VALUES: (16500000000000001)
DOCUMENT: projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001

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