Pattern di mappa termica per le chiavi dell'indice

Questa pagina mostra esempi di pattern che potresti visualizzare nella mappa di calore di Visualizzatore di elementi chiave. Questi pattern possono aiutarti a risolvere problemi di prestazioni specifici.

Utilizzo distribuito in modo uniforme

Mappa termica che mostra letture e scritture distribuite 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 la modalità Datastore.

Indici su chiavi 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. Quando attivi l'hotspot, potresti notare latenze elevate corrispondenti.

Di seguito sono riportati alcuni esempi di hotspot comuni nell'indice:

Hotspot a causa dell'aumento del timestamp

Mappa termica che mostra un 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 una proprietà timestamp.

Hotspot dovuti all'aumento dei nomi delle proprietà

Mappa termica che mostra gli hotspot a causa dell'aumento della proprietà

In questo esempio, una mappa termica con una singola linea diagonale brillante può indicare un database che utilizza operazioni di scrittura/eliminazione dell'indice strettamente in aumento o in diminuzione in una proprietà incrementale, ad esempio i numeri di fattura 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.

Informazioni sulla struttura della chiave dell'indice

Prima di comprendere la struttura delle chiavi di indice visualizzate nello strumento visualizzatore delle chiavi, scopri di più sugli indici in modalità Datastore.

Il codice seguente mostra un esempio di formato della chiave dell'indice visualizzato quando passi il mouse sopra l'intervallo di chiavi interessato sulla mappa termica.

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)

Dove:

  • NAMESPACE: spazio dei nomi dell'entità.
  • KIND: kind di entità che le classifica.
  • PROPERTIES: proprietà correlate all'entità. La proprietà di ordinamento __key__ viene mostrata solo per le definizioni di indici che modificano l'ordinamento predefinito.
  • ANCESTOR: percorso dell'antenato facoltativo per individuare l'entità all'interno della gerarchia del database.
  • VALUES: il valore di ogni proprietà.
  • ENTITY: ID dell'entità aggiornata in un'operazione.

Nell'esempio precedente, identifica le proprietà dal valore PROPERTIES per trovare l'indice interessato.

Per trovare l'indice:

  1. Vai alla pagina Indici in modalità Datastore nella console Google Cloud.

    Vai a Indici in modalità Datastore

    Puoi identificare il tipo di indice analizzando il campo PROPERTIES. Per ulteriori informazioni, consulta gli esempi di chiavi di indice.

  2. Fai clic su Filtro, seleziona Campi e inserisci il nome del campo.

    Utilizza l'operatore OR per aggiungere altre proprietà in caso di indici compositi.

Dopo aver identificato l'indice che causa problemi, puoi utilizzare le seguenti soluzioni:

  • Indice integrato: escludi la proprietà in modo che l'indice non gestisca le voci dell'indice per quella proprietà. Per saperne di più, consulta la sezione Proprietà escluse.
  • Indice composito: modifica l'indice nel file index.yaml 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. Per saperne di più, consulta la sezione Informazioni su index.yaml.

Esempi di voci di chiavi di indice nella mappa termica

Tipo Descrizione Esempio
Voce dell'indice integrata Voce dell'indice per l'indice di una singola proprietà nella proprietà Timestamp, in ordine decrescente per lo spazio dei nomi NS. NAMESPACE: NS
KIND: Users
PROPERTIES: (Timestamp: DESC)
ANCESTOR: NONE
VALUES: (16500000000000001)
ENTITY: KEY(PROJECT('PROJECT_ID'), NAMESPACE('NS'),Utenti, 5000000000000001)
Voce dell'indice integrata Voce dell'indice per l'indice di una singola proprietà nello spazio dei nomi predefinito. NAMESPACE: ' '
KIND: Users
PROPERTIES: (Timestamp: DESC)
ANCESTOR: NONE
VALUES: (16500000000000001)
ENTITY: KEY(PROJECT('PROJECT_ID'), NAMESPACE('NS'),Utenti, 5000000000000001)
Voce dell'indice composto Voce dell'indice per l'indice composto nella proprietà Timestamp e nella proprietà Name in ordine decrescente senza l'antenato abilitato. NAMESPACE: NS
KIND: Users
PROPERTIES: (Timestamp: DESC, Name: DESC)
ANCESTOR: NONE
VALUES: (16500000000000001, 'Alice')
ENTITY: KEY(PROJECT('PROJECT_ID'),NAMESPACE('NS'),Utenti,5000000000000001)
Voce dell'indice composto con antenato Voce dell'indice per l'indice composto nella proprietà Timestamp in ordine decrescente e nella proprietà Name in ordine decrescente con l'antenato abilitato. NAMESPACE: NS
KIND: Users
PROPERTIES: (Timestamp: DESC, Name: ASC)
ANCESTOR: KEY(PROJECT('PROJECT_ID'),NAMESPACE('NS'),UserList,1,Utente,5000000000000001
VALUES: (16500000000000001, 'Alice')
ENTITY: KEY(PROJECT('PROJECT_ID'),NAMESPACE('NS'),UserList,1,Utente,5000000000000001)
Voce dell'indice composto con __key__ Voce dell'indice per l'indice composto sulla proprietà Timestamp in ordine crescente e __key__ in ordine decrescente senza l'antenato abilitato. Puoi utilizzare __key__ come proprietà finale in una definizione di indice per modificare l'ordinamento predefinito dei risultati. NAMESPACE: NS
KIND: Users
PROPERTIES: (Timestamp: ASC, __key__ DESC)
ANCESTOR: NONE
VALUES: (16500000000000001)
ENTITY: KEY(PROJECT('PROJECT_ID'),NAMESPACE('NS'),UserList,1,User,5000000000000001)

Passaggi successivi