Pattern della mappa termica per le chiavi di indice
Questa pagina mostra esempi di pattern che potresti vedere in una mappa termica Key Visualizer. Questi pattern possono aiutarti a risolvere problemi specifici di prestazioni.
Utilizzo distribuito uniformemente
Se una mappa termica mostra una combinazione granulare di colori scuri e chiari, le operazioni di scrittura/eliminazione per le chiavi di indice vengono distribuite uniformemente nel database. È probabile che questa mappa termica rappresenti un pattern di utilizzo efficace per Firestore.
Indici sulle chiavi sequenziali
Una mappa termica con una singola linea diagonale luminosa può indicare un indice che si trova su una chiave rigorosamente in aumento o in diminuzione, ad esempio un timestamp. Gli indici su chiavi sequenziali non sono consigliati e possono creare hotspot. Durante l'hotspotting, potresti notare latenze elevate corrispondenti.
Di seguito sono riportati alcuni esempi di hotspot comuni sull'indice:
Hotspoting dovuto all'aumento del timestamp
In questo esempio, una mappa termica con una singola linea diagonale luminosa può indicare un database che utilizza operazioni di scrittura/eliminazione dell'indice rigorosamente crescenti o decrescenti sul nome di un campo timestamp.
Hotspoting dovuto all'aumento dei nomi dei campi
In questo esempio, una mappa termica con una singola linea diagonale luminosa può indicare un database che utilizza operazioni di scrittura/eliminazione dell'indice rigorosamente crescenti o decrescenti su un campo incrementale, ad esempio i numeri di fattura generati automaticamente.
Per identificare il problema di hotspot, utilizza lo strumento Key Visualizer e comprendi la struttura delle chiavi di indice per determinare quale indice causa il problema ed escludere gli indici mediante le best practice.
Comprendere la struttura delle chiavi di indice
Prima di comprendere la struttura delle chiavi di indice visualizzate nello strumento Key Visualizer, scopri di più sugli indici in Firestore.
Il codice seguente mostra un esempio di formato di chiave di indice che viene visualizzato quando passi il mouse sopra l'intervallo di chiavi interessato nella mappa termica.
COLLECTION: projects/PROJECT_ID/databases/(default)/documents/Users
PROPERTIES: (Timestamp: DESC)
VALUES: (16500000000000001)
DOCUMENT: projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001
Dove:
- RACCOLTA: posizione della raccolta nel database. In base all'ambito, può essere un percorso raccolta per l'ambito della raccolta o il nome della raccolta per l'ambito del gruppo di raccolte.
- PROPRIETÀ: campi utilizzati per creare l'indice. La proprietà di ordinamento
__name__
viene mostrata solo per le definizioni di indice che modificano l'ordine predefinito. - VALORI: valore di ogni proprietà.
- DOCUMENT: ID del documento aggiornato in un'operazione.
Nell'esempio precedente, identifica i campi del valore PROPERTIES per trovare l'indice interessato.
Per trovare l'indice, procedi nel seguente modo:
Nella console Google Cloud, vai alla pagina Database.
Seleziona il database richiesto dall'elenco dei database.
Nel menu di navigazione, fai clic su Indici.
Vai alla scheda Composito o Campo singolo.
Puoi identificare il tipo di indice analizzando il campo PROPRIETÀ. Per ulteriori informazioni, consulta gli esempi di chiavi di indice.
Fai clic su Filtra, seleziona Campi e inserisci il nome del campo.
Utilizza l'operatore OR per aggiungere altri campi in caso di indici composti.
Dopo aver identificato l'indice che causa i problemi, puoi utilizzare le seguenti soluzioni:
Indice composto: modifica l'indice per assicurarti che il campo il cui valore aumenta o diminuisce monotonicamente non sia selezionato come primo campo per l'indicizzazione oppure elimina l'indice.
Indice a campo singolo: aggiungi un'esenzione per il campo e l'ordine di ordinamento da escludere. Per ulteriori informazioni, consulta Aggiunta di un'esenzione a campo singolo.
Esempi di voci chiave dell'indice nella mappa termica
Tipo | Descrizione | Esempio |
---|---|---|
Indici a campo singolo per ambito della raccolta ASC, DESC | Per impostazione predefinita, Firestore crea indici con l'ambito della raccolta. Voce di indice dell'indice a campo singolo nel campo Timestamp , in ordine decrescente per il documento Users/5000000000000001 . |
COLLECTION: projects/PROJECT_ID/databases/(default)/documents/Users PROPERTIES: (Timestamp: DESC) VALUES: (16500000000000001) DOCUMENT: projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001 |
Indici a campo singolo per l'ambito della raccolta per i campi array | Per ogni campo array in un documento, Firestore crea e gestisce un ambito di raccolta array-contiene indice. Voce di indice per gli indici a campo singolo in modalità array-contiene che verrà creata quando verrà aggiunto un campo Country: [USA, Japan] al documento. Tieni presente che per impostazione predefinita verranno creati anche gli indici ASC eDESC per questo campo. L'esempio mostra l'indice ASC per il campo Country . |
COLLECTION: projects/PROJECT_ID/databases/(default)/documents/Users PROPERTIES:(Country: ASC) VALUES:([USA, Japan]) DOCUMENT:(projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001) |
Indici a campo singolo del gruppo di raccolte ASC, DESC, ARRAY | Un gruppo di raccolte include tutte le collezioni con lo stesso ID raccolta. Voce di indice dell'indice a campo singolo del gruppo di raccolte nel campo Timestamp , in ordine decrescente. |
COLLECTION GROUP: Users PROPERTIES: (Timestamp: DESC) VALUES: (16500000000000001L) DOCUMENT: projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001 |
Indici a campo singolo del gruppo di raccolte ASC, DESC, ARRAY | Voce di indice per il gruppo di raccolte Indice a campo singolo nel campo Country in modalità array-contains |
COLLECTION GROUP: Users PROPERTIES: (Country: ARRAY ASC) VALUES: (USA) DOCUMENT: projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001 |
Voce dell'indice composto della raccolta con proprietà ASC, ASC e ARRAY | Le voci di indice composto con l'elemento padre vengono create quando vengono creati documenti nidificati con la definizione dell'indice dell'ambito di raccolta. Voce di indice per l'indice composto con i campi Timestamp e Name in ordine crescente e Country in modalità 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) |
Voce dell'indice composto dell'ambito del gruppo di raccolte con proprietà ASC e ASC | Voce dell'indice composto nel campo Timestamp , in ordine crescente e nel campo Name in ordine crescente |
COLLECTION GROUP: Users PROPERTIES: (Timestamp: ASC, Name: ASC) VALUES: (16500000000000001L, 'Alice') DOCUMENT: (projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001) |
Voce di indice composito dell'ambito della raccolta con proprietà ASC e __name__ |
Voce di indice dell'indice composto nel campo Timestamp in ordine crescente e con ordinamento __name__ in ordine decrescente per il documento Users/5000000000000001 . Puoi utilizzare __name__ come campo finale in una definizione di indice per modificare l'ordine predefinito dei risultati. |
COLLECTION: projects/PROJECT_ID/databases/(default)/documents/Users PROPERTIES: (Timestamp: ASC, __name__ DESC) VALUES: (16500000000000001) DOCUMENT: projects/PROJECT_ID/databases/(default)/documents/Users/5000000000000001 |
Passaggi successivi
- Scopri come iniziare a utilizzare Key Visualizer.
- Scopri come esplorare una mappa termica in dettaglio.
- Scopri di più sulle metriche che puoi visualizzare in una mappa termica.