Questa pagina descrive come creare e gestire i punti di divisione nel tuo database. Puoi creare punti di divisione per dividere in anticipo il database e prepararti a un aumento previsto del traffico. Per ulteriori informazioni sulla pre-suddivisione, consulta la panoramica della pre-suddivisione.
Prima di iniziare
-
Per ottenere l'autorizzazione necessaria per creare e gestire i punti di divisione, chiedi all'amministratore di concederti il ruolo IAM Cloud Spanner Database Admin (
roles/spanner.databaseAdmin
) nella tua istanza. Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.Questo ruolo predefinito contiene l'autorizzazione
spanner.databases.addSplitPoints
necessaria per creare e gestire i punti di divisione.Potresti anche ottenere questa autorizzazione con ruoli personalizzati o altri ruoli predefiniti.
Gli esempi gcloud CLI in questa pagina si basano sulle seguenti ipotesi:
- Hai configurato gcloud CLI per l'utilizzo con Spanner. Se non hai mai utilizzato gcloud CLI con Spanner, consulta Creare ed eseguire query su un database utilizzando gcloud CLI.
Hai configurato gcloud CLI con il tuo progetto. Ad esempio:
gcloud config set core/project PROJECT_ID
Assicurati che la tua istanza Spanner abbia un numero sufficiente di nodi per supportare l'aumento previsto del traffico. Per ulteriori informazioni, consulta la panoramica della pre-suddivisione.
Creare punti di divisione
Puoi creare punti di divisione utilizzando Google Cloud CLI o le API REST.
gcloud
Se vuoi creare punti di divisione utilizzando Google Cloud CLI, devi creare un file che contenga tutte le divisioni e fornire il percorso nel comando gcloud CLI. Il file non deve superare il limite API di 100 punti per richiesta API. Per ulteriori informazioni, consulta Quote e limiti.
Il file deve utilizzare il seguente formato per specificare i punti di divisione:
ObjectType ObjectName (SplitValue1)
ObjectType ObjectName (SplitValue2)
ObjectType ObjectName (SplitValueN)
Sostituisci le seguenti variabili durante la creazione del file:
- ObjectType: il tipo di oggetto in cui vuoi aggiungere le suddivisioni. I valori
validi sono
TABLE
eINDEX
. - ObjectName: il nome della tabella o dell'indice del database.
- SplitValue1..N: i valori dei punti di divisione in cui vuoi introdurre le divisioni.
Utilizza le seguenti regole quando crei i valori del punto di suddivisione nel file:
- I valori stringa devono essere racchiusi tra virgolette singole. Ad esempio,
'splitKeyPart'
- I valori booleani devono essere
true
ofalse
. - I valori dei tipi di dati Spanner
INT64
eNUMERIC
devono essere racchiusi tra apici singoli. Ad esempio,'123'
o'99.99'
. - Tutti gli altri valori numerici devono essere scritti senza virgolette singole. Ad esempio,
1.287
. - I valori del timestamp devono essere forniti nel formato
'2020-06-18T17:24:53Z'
tra virgolette singole. - I valori di suddivisione devono essere racchiusi tra parentesi.
- L'ordine dei valori delle chiavi di suddivisione deve corrispondere all'ordine delle chiave primaria.
- Se il valore di suddivisione deve contenere una virgola, devi eseguire l'escape della virgola utilizzando un carattere `\`.
- Per la suddivisione degli indici, puoi fornire la chiave indice o l'intero indice e la chiave della tabella completa.
- Quando specifichi il punto di suddivisione, devi sempre utilizzare la chiave completa.
Di seguito è riportato un file di esempio che mostra come vengono specificati i punti di divisione:
TABLE Singers ('c32ca57a-786c-2268-09d4-95182a9930be')
TABLE Singers ('bb98c7e2-8240-b780-346d-c5d63886594a')
INDEX Order ('5b8bac71-0cb2-95e9-e1b0-89a027525460')
TABLE Payment ('6cf41f21-2d77-318f-c504-816f0068db8b')
INDEX Indx_A (2152120141932780000)
TABLE TableD (0,'7ef9d̦b22-d0e5-6041-8937-4bc6a7ef9db2')
INDEX IndexXYZ ('8762203435012030000',NULL,NULL)
INDEX IndexABC (0, '2020-06-18T17:24:53Z', '2020-06-18T17:24:53Z') TableKey
(123,'ab\,c')
Prima di utilizzare i dati dei comandi riportati di seguito, apporta le seguenti sostituzioni:
- SPLITS_FILE: il percorso del file di suddivisione.
- INSTANCE_ID: l'ID istanza
- DATABASE_ID: l'ID database.
-
EXPIRATION_DATE:
(facoltativo) la data di scadenza dei punti suddivisi. Accetta un timestamp nel formato
'2020-06-18T17:24:53Z'
. - INITIATOR: (facoltativo) l'iniziatore dei punti di divisione.
Esegui questo comando:
Linux, macOS o Cloud Shell
gcloud spanner databases splits add DATABASE_ID \ --splits-file=SPLITS_FILE \ --instance=INSTANCE_ID \ --split-expiration-date=EXPIRATION_DATE \ --initiator=INITIATOR
Windows (PowerShell)
gcloud spanner databases splits add DATABASE_ID ` --splits-file=SPLITS_FILE ` --instance=INSTANCE_ID ` --split-expiration-date=EXPIRATION_DATE ` --initiator=INITIATOR
Windows (cmd.exe)
gcloud spanner databases splits add DATABASE_ID ^ --splits-file=SPLITS_FILE ^ --instance=INSTANCE_ID ^ --split-expiration-date=EXPIRATION_DATE ^ --initiator=INITIATOR
REST v1
Puoi utilizzare il metodo
projects.instances.databases.addSplitPoints
per creare punti di divisione.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: l'ID progetto
- INSTANCE_ID: l'ID istanza
- DATABASE_ID: l'ID database.
Metodo HTTP e URL:
POST https://spanner.googleapis.com/v1/projects//instances/ /databases/ :addSplitPoints
Corpo JSON della richiesta:
{ "split_points": [ { "table": "T1", "index": "T1_IDX", "expire_time": "2023-04-22T10:00:20.021Z", "keys": [ { "key_parts": { "values": [ 3 ] } }, { "key_parts": { "values": [ 10 ] } } ] }, { "table": "T2", "expire_time": "2023-04-22T10:00:20.021Z", "keys": [ { "key_parts": { "values": [ 50 ] } } ] } ] }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere un codice di stato riuscito (2xx) e una risposta vuota.
Librerie client
Vai
Java
Node.js
Python
Possibili scenari di errore
I seguenti scenari possono causare un errore durante la creazione dei punti di divisione:
- La suddivisione del livello di indice ha un nome di tabella errato nell'input.
- Il punto di divisione a livello di tabella ha più di una chiave.
- Il punto di divisione del livello di indice ha più di due chiavi.
- I punti di suddivisione sono definiti in tabelle o indici non definiti nello schema del database.
- La richiesta contiene punti di divisione duplicati.
Per informazioni su quote e limiti, consulta Quote e limiti.
Visualizzare i punti suddivisi
Puoi visualizzare tutti i punti di suddivisione creati nel database utilizzando la consoleGoogle Cloud o gcloud CLI:
Console
Per ottenere il conteggio dei punti di divisione eseguendo una query sulla visualizzazione SPANNER_SYS.USER_SPLIT_POINTS
nella console Google Cloud :
Apri la pagina delle istanze Spanner.
Seleziona i nomi dell'istanza Spanner e del database che vuoi interrogare.
Fai clic su Spanner Studio nel pannello di navigazione a sinistra.
Digita la seguente query nel campo di testo:
SELECT * FROM SPANNER_SYS.USER_SPLIT_POINTS
Fai clic su Esegui query.
Viene visualizzato un risultato simile al seguente:
TABLE_NAME | INDEX_NAME | INITIATOR | SPLIT_KEY | EXPIRE_TIME |
---|---|---|---|---|
T | CloudAddSplitPointsAPI | T(90,153,4,2024-04-30T17:00:00-07:00,1,2024-05-01,a) | 2025-03-06T09:58:58.007201Z | |
T | T_IDX | CloudAddSplitPointsAPI | Indice: T_IDX su T, chiave indice: (10), chiave tabella primaria: (<begin>,<begin>,<begin>,<begin>,<begin>,<begin>,<begin>) | 2025-03-08T07:33:23.861682Z |
T | T_IDX | CloudAddSplitPointsAPI | Indice: T_IDX su T, chiave indice: (9091), chiave tabella principale: (4567,123,4.2,2024-04-30T17:00:00-07:00,1,2024-05-01,a) | 2025-03-08T07:35:25.990007Z |
gcloud
Esegui questo comando gcloud CLI per visualizzare i punti di suddivisione nel database:
gcloud spanner databases splits list DATABASE_ID \
--instance INSTANCE_ID
Sostituisci le seguenti variabili quando esegui questo comando:
- INSTANCE_ID: l'ID istanza Spanner.
- DATABASE_ID: l'ID database Spanner.
Viene visualizzata una risposta simile alla seguente:
TABLE_NAME: T
INDEX_NAME:
INITIATOR: CloudAddSplitPointsAPI
SPLIT_KEY: T(90,153,4,2024-04-30T17:00:00-07:00,1,2024-05-01,a)
EXPIRE_TIME: 2025-03-06T09:58:58.007201Z
TABLE_NAME: T
INDEX_NAME: T_IDX
INITIATOR: CloudAddSplitPointsAPI
SPLIT_KEY: Index: T_IDX on T, Index Key: (10), Primary Table Key: (<begin>,<begin>,<begin>,<begin>,<begin>,<begin>,<begin>)
EXPIRE_TIME: 2025-03-08T07:33:23.861682Z
TABLE_NAME: T
INDEX_NAME: T_IDX
INITIATOR: CloudAddSplitPointsAPI
SPLIT_KEY: Index: T_IDX on T, Index Key: (9091), Primary Table Key: (4567,123,4.2,2024-04-30T17:00:00-07:00,1,2024-05-01,a)
EXPIRE_TIME: 2025-03-08T07:35:25.990007Z
Come far scadere un punto di divisione
Puoi impostare un tempo di scadenza per ogni punto di divisione che crei. Per maggiori informazioni, consulta la sezione Scadenza del punto di divisione. Puoi far scadere i punti di divisione utilizzando Google Cloud CLI o le API REST.
gcloud
Se vuoi far scadere i punti di suddivisione con Google Cloud CLI, devi
creare un file che contenga tutte le suddivisioni che vuoi far scadere e fornire il relativo
percorso utilizzando il parametro splits-file
nel
comando gcloud CLI. Il file non deve superare il limite API di 100
punti per richiesta API. Per ulteriori informazioni, consulta
Quote e limiti.
Il file deve utilizzare il seguente formato per specificare i punti di divisione:
ObjectType ObjectName (SplitValue)
ObjectType ObjectName (SplitValue)
ObjectType ObjectName (SplitValue)
Sostituisci le seguenti variabili durante la creazione del file:
- ObjectType: il tipo di oggetto della suddivisione che vuoi far scadere. I valori
validi sono
TABLE
eINDEX
. - ObjectName: il nome della tabella o dell'indice del database.
- SplitValue: il valore del punto di suddivisione che vuoi far scadere.
Utilizza le seguenti regole quando crei i valori del punto di suddivisione nel file:
- I valori stringa devono essere racchiusi tra virgolette singole. Ad esempio,
'splitKeyPart'
- I valori booleani possono essere
true
ofalse
. - I valori dei tipi di dati Spanner
INT64
eNUMERIC
devono essere racchiusi tra apici singoli. Ad esempio,'123'
o'99.99'
. - Tutti gli altri valori numerici devono essere scritti senza virgolette singole. Ad esempio,
1.287
. - I valori del timestamp devono essere forniti nel formato
'2020-06-18T17:24:53Z'
tra virgolette singole. - I valori di suddivisione devono essere racchiusi tra parentesi.
- L'ordine dei valori delle chiavi di suddivisione deve corrispondere all'ordine delle chiave primaria.
- Se il valore di suddivisione deve contenere una virgola, devi eseguire l'escape della virgola utilizzando un carattere `\`.
- Per la suddivisione degli indici, puoi fornire la chiave indice o l'intero indice e la chiave della tabella completa.
- Quando specifichi il punto di suddivisione, devi sempre utilizzare la chiave completa.
Di seguito è riportato un file di esempio che mostra come vengono specificati i punti di divisione:
TABLE Singers ('c32ca57a-786c-2268-09d4-95182a9930be')
TABLE Singers ('bb98c7e2-8240-b780-346d-c5d63886594a')
INDEX Order ('5b8bac71-0cb2-95e9-e1b0-89a027525460')
TABLE Payment ('6cf41f21-2d77-318f-c504-816f0068db8b')
INDEX Indx_A (2152120141932780000)
TABLE TableD (0,'7ef9db22-d0e5-6041-8937-4bc6a7ef9db2')
INDEX IndexXYZ ('8762203435012030000',NULL,NULL)
INDEX IndexABC (0, '2020-06-18T17:24:53Z', '2020-06-18T17:24:53Z') TableKey
(123,'ab\,c')
Prima di utilizzare i dati dei comandi riportati di seguito, apporta le seguenti sostituzioni:
- SPLITS_FILE: il percorso del file di suddivisione.
- INSTANCE_ID: l'ID istanza
- DATABASE_ID: l'ID database.
-
EXPIRATION_DATE:
(facoltativo) la data di scadenza dei punti suddivisi. Accetta un timestamp nel formato
'2020-06-18T17:24:53Z'
. - INITIATOR: (facoltativo) l'iniziatore dei punti di divisione.
Esegui questo comando:
Linux, macOS o Cloud Shell
gcloud spanner databases splits add DATABASE_ID \ --splits-file=SPLITS_FILE \ --instance=INSTANCE_ID \ --split-expiration-date=EXPIRATION_DATE \ --initiator=INITIATOR
Windows (PowerShell)
gcloud spanner databases splits add DATABASE_ID ` --splits-file=SPLITS_FILE ` --instance=INSTANCE_ID ` --split-expiration-date=EXPIRATION_DATE ` --initiator=INITIATOR
Windows (cmd.exe)
gcloud spanner databases splits add DATABASE_ID ^ --splits-file=SPLITS_FILE ^ --instance=INSTANCE_ID ^ --split-expiration-date=EXPIRATION_DATE ^ --initiator=INITIATOR
REST v1
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: l'ID progetto
- INSTANCE_ID: l'ID istanza
- DATABASE_ID: l'ID database.
Metodo HTTP e URL:
POST https://spanner.googleapis.com/v1/projects//instances/ /databases/ :addSplitPoints
Corpo JSON della richiesta:
{ "split_points": [ { "table": "T1", "index": "T1_IDX", "expire_time": "2023-04-22T10:00:20.021Z", "keys": [ { "key_parts": { "values": [ 3 ] } }, { "key_parts": { "values": [ 10 ] } } ] }, { "table": "T2", "expire_time": "2023-04-22T10:00:20.021Z", "keys": [ { "key_parts": { "values": [ 50 ] } } ] } ] }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere un codice di stato riuscito (2xx) e una risposta vuota.