דפוסי מפת חום למקשי אינדקס
בדף הזה מוצגות דוגמאות לדפוסים שאפשר לראות במפת חום של 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 כדי למצוא את האינדקס המושפע.
כדי למצוא את האינדקס, פועלים לפי השלבים הבאים:
נכנסים לדף Databases במסוף Google Cloud .
בוחרים את מסד הנתונים הרצוי מתוך רשימת מסדי הנתונים.
בתפריט הניווט, לוחצים על Indexes (אינדקסים).
עוברים לכרטיסייה מורכב או לכרטיסייה שדה יחיד.
כדי לזהות את סוג האינדקס, צריך לנתח את השדה PROPERTIES. מידע נוסף זמין בדוגמאות למפתחות אינדקס.
לוחצים על מסנן, בוחרים באפשרות שדות ומזינים את שם השדה.
במקרה של אינדקסים מורכבים, אפשר להשתמש באופרטור OR כדי להוסיף עוד שדות.
אחרי שתזהו את האינדקס שגורם לבעיות, תוכלו להשתמש בפתרונות הבאים:
אינדקס מורכב: אפשר לשנות את האינדקס כדי לוודא שהשדה שהערך שלו עולה או יורד באופן מונוטוני לא נבחר כשדה הראשון ליצירת אינדקס, או למחוק את האינדקס.
אינדקס של שדה יחיד: מוסיפים פטור לשדה ולסדר המיון שרוצים להחריג. מידע נוסף זמין במאמר בנושא הוספת פטור לשדה יחיד.
דוגמאות לרשומות של מפתח אינדקס במפת החום
| סוג | תיאור | דוגמה |
|---|---|---|
| אינדקסים של שדה יחיד בהיקף של אוסף בסדר עולה (ASC) או בסדר יורד (DESC) | Firestore יוצר אינדקסים עם היקף של אוסף כברירת מחדל. רשומה באינדקס של אינדקס חד-שדה בשדה Timestamp, בסדר יורד עבור המסמך Users/5000000000000001. |
COLLECTION: projects/PROJECT_ID/databases/(default)/documents/UsersPROPERTIES: (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/UsersPROPERTIES:(Country: ASC)VALUES:([USA, Japan]) DOCUMENT:(projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001) |
| קבוצת אוספים, אינדקסים של שדה יחיד, ASC, DESC, ARRAY | קבוצת אוספים כוללת את כל האוספים עם אותו מזהה אוסף. רשומה באינדקס של קבוצת האוספים של האינדקס בשדה Timestamp, בסדר יורד. |
COLLECTION GROUP: UsersPROPERTIES: (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/UsersPROPERTIES: (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: UsersPROPERTIES: (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/UsersPROPERTIES: (Timestamp: ASC, __name__ DESC)VALUES: (16500000000000001)DOCUMENT: projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001 |