Esta página descreve como criar e gerenciar pontos de divisão no seu banco de dados. Você pode criar pontos de divisão para pré-dividir seu banco de dados e se preparar para um aumento previsto no tráfego. Para mais informações sobre a divisão antecipada, consulte Visão geral da divisão antecipada.
Antes de começar
-
Para receber a permissão necessária para criar e gerenciar pontos de divisão, peça ao administrador para conceder a você o papel do IAM de Administrador do banco de dados do Cloud Spanner (
roles/spanner.databaseAdmin
) na sua instância. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.Esse papel predefinido contém a permissão
spanner.databases.addSplitPoints
, que é necessária para criar e gerenciar pontos de divisão.Também é possível conseguir essa permissão com papéis personalizados ou outros papéis predefinidos.
Os exemplos da CLI gcloud nesta página fazem as seguintes suposições:
- Você configurou a CLI gcloud para uso com o Spanner. Se você não sabe como usar a CLI gcloud com o Spanner, consulte Criar e consultar um banco de dados usando a CLI gcloud.
Você configurou a CLI gcloud com seu projeto. Exemplo:
gcloud config set core/project PROJECT_ID
Verifique se a instância do Spanner tem nós suficientes para oferecer suporte ao aumento previsto no tráfego. Para mais informações, consulte Visão geral da pré-divisão.
Criar pontos de divisão
É possível criar pontos de divisão usando a Google Cloud CLI ou as APIs REST.
gcloud
Se você quiser criar pontos de divisão usando a Google Cloud CLI, crie um arquivo que contenha todas as divisões e forneça o caminho no comando da CLI gcloud. O arquivo não pode exceder o limite de 100 pontos por solicitação de API. Para mais informações, consulte Cotas e limites.
O arquivo precisa usar o seguinte formato para especificar os pontos de divisão:
ObjectType ObjectName (SplitValue)
ObjectType ObjectName (SplitValue)
ObjectType ObjectName (SplitValue)
Substitua as seguintes variáveis ao criar o arquivo:
- ObjectType: o tipo de objeto em que você quer adicionar divisões. Os valores
válidos são
TABLE
eINDEX
. - ObjectName: o nome da tabela ou do índice do banco de dados.
- SplitValue: o pontuação de divisão em que você quer introduzir as divisões.
Use as seguintes regras ao criar os valores do ponto de divisão no arquivo:
- Os valores de string precisam estar entre aspas simples. Por exemplo,
'splitKeyPart'
. - Os valores booleanos precisam ser
true
oufalse
. - Os valores de tipo de dados
INT64
eNUMERIC
do Spanner precisam estar entre aspas simples. Por exemplo,'123'
ou'99.99'
. - Todos os outros valores numéricos precisam ser escritos sem aspas simples. Por exemplo,
1.287
. - Os valores de carimbo de data/hora precisam ser fornecidos no formato
'2020-06-18T17:24:53Z'
entre aspas simples. - Os valores divididos precisam estar entre parênteses.
- A ordem dos valores das chaves divididas precisa ser igual à ordem da chave primária.
- Se o valor da divisão precisar ter uma vírgula, use um caractere `\` para escapar dela.
- Para dividir índices, você pode fornecer a chave de índice ou o índice inteiro e a chave de tabela completa.
- É preciso sempre usar a chave completa ao especificar o ponto de divisão.
Confira a seguir um arquivo de exemplo que mostra como os pontos de divisão são especificados:
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')
Antes de usar os dados do comando abaixo, faça estas substituições:
- SPLITS_FILE: o caminho para o arquivo de divisões.
- INSTANCE_ID: o ID da instância
- DATABASE_ID: o ID do banco de dados.
-
EXPIRATION_DATE:
(opcional) a data de validade dos pontos de divisão. Aceita um carimbo de data/hora no
formato
'2020-06-18T17:24:53Z'
. - INITIATOR: (opcional) o iniciador dos pontos de divisão.
Execute o seguinte comando:
Linux, macOS ou 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
Use o método
projects.instances.databases.addSplitPoints
para criar pontos de divisão.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do projeto.
- INSTANCE_ID: o ID da instância
- DATABASE_ID: o ID do banco de dados.
Método HTTP e URL:
POST https://spanner.googleapis.com/v1/projects//instances/ /databases/ :addSplitPoints
Corpo JSON da solicitação:
{ "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 ] } } ] } ] }
Para enviar a solicitação, expanda uma destas opções:
Você receberá um código de status bem-sucedido (2xx) e uma resposta vazia.
Bibliotecas de cliente
Go
Java
Node.js
Python
Possíveis cenários de erro
Os seguintes cenários podem resultar em um erro ao criar pontos de divisão:
- A divisão no nível do índice tem um nome de tabela incorreto na entrada.
- O ponto de divisão no nível da tabela tem mais de uma chave.
- O ponto de divisão no nível do índice tem mais de duas chaves.
- Os pontos de divisão são definidos em tabelas ou índices que não estão definidos no esquema do banco de dados.
- A solicitação contém pontos de divisão duplicados.
Para mais informações sobre o assunto, consulte Cotas e limites.
Conferir pontos de divisão
É possível conferir todos os pontos de divisão criados no seu banco de dados usando o Google Cloud console ou a CLI gcloud:
Console
Para conferir a contagem de pontos de divisão ao consultar a visualização SPANNER_SYS.USER_SPLIT_POINTS
no console Google Cloud , faça o seguinte:
Abra a página "Instâncias do Spanner".
Selecione os nomes da instância do Spanner e do banco de dados que você quer consultar.
Clique em Spanner Studio no painel de navegação à esquerda.
Digite a seguinte consulta no campo de texto:
SELECT * FROM SPANNER_SYS.USER_SPLIT_POINTS
Clique em Executar consulta.
Um resultado semelhante a este vai aparecer:
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 | Índice: T_IDX em T, chave de índice: (10), chave de tabela primária: (<begin>,<begin>,<begin>,<begin>,<begin>,<begin>,<begin>) | 2025-03-08T07:33:23.861682Z |
T | T_IDX | CloudAddSplitPointsAPI | Índice: T_IDX em T, chave de índice: (9091), chave de tabela primária: (4567,123,4.2,2024-04-30T17:00:00-07:00,1,2024-05-01,a) | 2025-03-08T07:35:25.990007Z |
gcloud
Execute o seguinte comando da CLI gcloud para conferir os pontos de divisão no seu banco de dados:
gcloud spanner databases splits list DATABASE_ID \
--instance INSTANCE_ID
Substitua as seguintes variáveis ao executar este comando:
- INSTANCE_ID: o ID da instância do Spanner.
- DATABASE_ID: o ID do banco de dados do Spanner.
Uma resposta semelhante a esta vai aparecer:
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
Como expirar um ponto de divisão
É possível definir um tempo de expiração para cada ponto de divisão criado. Para mais informações, consulte Expiração do ponto de divisão. É possível expirar pontos de divisão usando a Google Cloud CLI ou as APIs REST.
gcloud
Se você quiser expirar pontos de divisão na Google Cloud CLI, crie um arquivo com todas as divisões que quer expirar e forneça o caminho usando o parâmetro splits-file
no comando CLI gcloud. O arquivo não pode exceder o limite de 100 pontos por solicitação de API. Para mais informações, consulte
Cotas e limites.
O arquivo precisa usar o seguinte formato para especificar os pontos de divisão:
ObjectType ObjectName (SplitValue)
ObjectType ObjectName (SplitValue)
ObjectType ObjectName (SplitValue)
Substitua as seguintes variáveis ao criar o arquivo:
- ObjectType: o tipo de objeto da divisão que você quer expirar. Os valores
válidos são
TABLE
eINDEX
. - ObjectName: o nome da tabela ou do índice do banco de dados.
- SplitValue: o pontuação de divisão que você quer expirar.
Use as seguintes regras ao criar os valores do ponto de divisão no arquivo:
- Os valores de string precisam estar entre aspas simples. Por exemplo,
'splitKeyPart'
. - Os valores booleanos podem ser
true
oufalse
. - Os valores de tipo de dados
INT64
eNUMERIC
do Spanner precisam estar entre aspas simples. Por exemplo,'123'
ou'99.99'
. - Todos os outros valores numéricos precisam ser escritos sem aspas simples. Por exemplo,
1.287
. - Os valores de carimbo de data/hora precisam ser fornecidos no formato
'2020-06-18T17:24:53Z'
entre aspas simples. - Os valores divididos precisam estar entre parênteses.
- A ordem dos valores das chaves divididas precisa ser igual à ordem da chave primária.
- Se o valor da divisão precisar ter uma vírgula, use um caractere `\` para escapar dela.
- Para dividir índices, você pode fornecer a chave de índice ou o índice inteiro e a chave de tabela completa.
- É preciso sempre usar a chave completa ao especificar o ponto de divisão.
Confira a seguir um arquivo de exemplo que mostra como os pontos de divisão são especificados:
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')
Antes de usar os dados do comando abaixo, faça estas substituições:
- SPLITS_FILE: o caminho para o arquivo de divisões.
- INSTANCE_ID: o ID da instância
- DATABASE_ID: o ID do banco de dados.
-
EXPIRATION_DATE:
(opcional) a data de validade dos pontos de divisão. Aceita um carimbo de data/hora no
formato
'2020-06-18T17:24:53Z'
. - INITIATOR: (opcional) o iniciador dos pontos de divisão.
Execute o seguinte comando:
Linux, macOS ou 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
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do projeto.
- INSTANCE_ID: o ID da instância
- DATABASE_ID: o ID do banco de dados.
Método HTTP e URL:
POST https://spanner.googleapis.com/v1/projects//instances/ /databases/ :addSplitPoints
Corpo JSON da solicitação:
{ "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 ] } } ] } ] }
Para enviar a solicitação, expanda uma destas opções:
Você receberá um código de status bem-sucedido (2xx) e uma resposta vazia.