Pattern della mappa termica per i tasti indice
Questa pagina mostra esempi di pattern che potresti vedere in un Key Visualizer mappa termica. Questi pattern possono aiutarti a risolvere problemi di prestazioni specifici.
Utilizzo distribuito in modo uniforme
Se una mappa termica mostra una combinazione dettagliata di colori scuri e brillanti, le operazioni di scrittura/eliminazione per le chiavi di indice sono distribuite uniformemente nel database. Questa mappa termica rappresenta probabilmente un pattern di utilizzo efficace per Firestore.
Indici sui tasti sequenziali
Una mappa termica con una singola linea diagonale brillante può indicare un indice su una chiave in aumento o in diminuzione, ad esempio il timestamp. Gli indici su chiavi sequenziali non sono consigliati e possono creare hotspot. Durante l'hotspot, potresti osservare latenze elevate corrispondenti.
Di seguito sono riportati alcuni esempi di hotspot comuni sull'indice:
Hotspot a causa dell'aumento del timestamp
In questo esempio, una mappa termica con una singola linea diagonale brillante può indicare un database che utilizza operazioni di scrittura/eliminazione dell'indice in aumento o in diminuzione su un nome di campo timestamp.
Hotspot dovuti all'aumento dei nomi dei campi
In questo esempio, una mappa termica con una singola linea diagonale luminosa può indicare una che utilizza operazioni di scrittura/eliminazione dell'indice rigorosamente in aumento o in diminuzione su un campo incrementale, ad esempio i numeri delle fatture generati automaticamente.
Per identificare il problema di hotspot, utilizza lo strumento Key Visualizer e comprendi la struttura della chiave dell'indice per determinare quale indice causa il problema ed esentare questi indici con le best practice.
Comprendere la struttura delle chiavi dell'indice
Prima di comprendere la struttura delle chiavi di indice che vedi in Key Visualizer scopri di più sugli indici in Firestore.
Il seguente codice mostra un esempio di formato di chiave indice che viene visualizzato quando passi il mouse sopra sopra l'intervallo di tasti interessato sulla 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:
- COLLECTION: posizione della raccolta nel database. In base alla scope, può essere il percorso della raccolta per l'ambito o il nome della raccolta per nell'ambito del gruppo di raccolte.
- PROPRIETÀ: i 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: il valore di ogni proprietà.
- DOCUMENT: ID del documento aggiornato in un'operazione.
Nell'esempio precedente, identifica i campi dal valore PROPRIETÀ per trovare l'indice interessato.
Per trovare l'indice, svolgi i seguenti passaggi:
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 PROPERTIES. 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 in modo monotonico non è selezionato come primo campo per l'indicizzazione o eliminarlo.
Indice a campo singolo: aggiungi un'esenzione per il campo e l'ordinamento che da escludere. Per ulteriori informazioni, consulta la sezione Aggiunta di un'esenzione a campo singolo.
Esempi di voci della chiave dell'indice nella mappa termica
Tipo | Descrizione | Esempio |
---|---|---|
Indici a campo singolo ambito raccolta ASC, DESC | Firestore crea indici con ambito della raccolta per impostazione predefinita. Voce di indice per l'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 a livello di raccolta per i campi array | Per ogni campo array in un documento, Firestore crea e gestisce un indice contiene array a livello di raccolta. Voce di indice per gli indici a campo singolo in modalità array-contiene che verranno creati quando si aggiunge un campo Country: [USA, Japan] al documento. Tieni presente che per impostazione predefinita verranno creati anche gli indici ASC, DESC 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 raccolte con lo stesso ID raccolta. Voce dell'indice per l'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 a campo singolo Indice 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, ARRAY | Le voci dell'indice composto con elemento principale vengono create quando vengono creati documenti nidificati con la definizione dell'indice a livello di raccolta. Voce dell'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 di indice composto nell'ambito del gruppo di raccolte con proprietà ASC, ASC | Voce dell'indice per l'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 dell'indice composto a livello di raccolta con proprietà ASC e __name__ |
Voce dell'indice per l'indice composto sul campo Timestamp in ordine crescente e con __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 di calore in dettaglio.
- Leggi le metriche che puoi visualizzare in una mappa termica.