Esta página descreve como pode criar e gerir pontos de divisão na sua base de dados. Pode criar pontos de divisão para dividir previamente a base de dados de forma a ajudar na preparação para um aumento previsto no tráfego. Para mais informações sobre a pré-divisão, consulte o artigo Vista geral da pré-divisão.
Antes de começar
-
Para receber a autorização de que precisa para criar e gerir pontos de divisão, peça ao seu administrador para lhe conceder a função de IAM Administrador da base de dados do Cloud Spanner (
roles/spanner.databaseAdmin
) na sua instância. Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.Esta função predefinida contém a autorização
spanner.databases.addSplitPoints
, que é necessária para criar e gerir pontos de divisão.Também pode obter esta autorização com funções personalizadas ou outras funções predefinidas.
Os exemplos da CLI gcloud nesta página baseiam-se nos seguintes pressupostos:
- Configurou a CLI gcloud para utilização com o Spanner. Se não tiver experiência na utilização da gcloud CLI com o Spanner, consulte o artigo Crie e consulte uma base de dados com a gcloud CLI.
Configurou a CLI gcloud com o seu projeto. Por exemplo:
gcloud config set core/project PROJECT_ID
Certifique-se de que a instância do Spanner tem nós suficientes para suportar o aumento previsto no tráfego. Para mais informações, consulte a Vista geral da pré-divisão.
Crie pontos de divisão
Pode criar pontos de divisão através da Google Cloud CLI ou das APIs REST.
gcloud
Se quiser criar pontos de divisão através da CLI do Google Cloud, tem de criar um ficheiro que contenha todas as divisões e fornecer o caminho no comando da CLI gcloud. O ficheiro não pode exceder o limite da API de 100 pontos por pedido de API. Para mais informações, consulte o artigo Quotas e limites.
O ficheiro tem de usar o seguinte formato para especificar os pontos de divisão:
ObjectType ObjectName (SplitValue1)
ObjectType ObjectName (SplitValue2)
ObjectType ObjectName (SplitValueN)
Substitua as seguintes variáveis ao criar o ficheiro:
- ObjectType: o tipo de objeto que quer adicionar divide-se. Os valores válidos são
TABLE
eINDEX
. - ObjectName: o nome da tabela ou do índice da base de dados.
- SplitValue1..N: os valores dos pontos de divisão onde quer introduzir as divisões.
Use as seguintes regras ao criar os valores dos pontos de divisão no ficheiro:
- Os valores de string têm de estar entre aspas simples. Por exemplo,
'splitKeyPart'
- Os valores booleanos têm de ser
true
oufalse
. - Os valores do tipo de dados do Spanner
INT64
eNUMERIC
têm de estar entre aspas simples. Por exemplo,'123'
ou'99.99'
. - Todos os outros valores numéricos têm de ser escritos sem aspas simples. Por exemplo,
1.287
. - Os valores de data/hora devem ser fornecidos no formato
'2020-06-18T17:24:53Z'
entre aspas simples. - Os valores divididos têm de estar entre parênteses.
- A ordem dos valores das chaves divididas tem de ser igual à ordem das chaves principais.
- Se o valor dividido precisar de ter uma vírgula, tem de usar o caráter `\` para escapar à vírgula.
- Para dividir os índices, pode fornecer a chave do índice ou o índice completo e a chave da tabela completa.
- Tem de usar sempre a chave completa quando especificar o ponto de divisão.
Segue-se um ficheiro 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 qualquer um dos dados de comandos abaixo, faça as seguintes substituições:
- SPLITS_FILE: o caminho para o ficheiro de divisões.
- INSTANCE_ID: o ID da instância.
- DATABASE_ID: o ID da base de dados.
-
EXPIRATION_DATE:
(opcional) a data de validade dos pontos divididos. Aceita uma 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
Pode usar o método
projects.instances.databases.addSplitPoints
para criar pontos de divisão.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do projeto.
- INSTANCE_ID: o ID da instância.
- DATABASE_ID: o ID da base de dados.
Método HTTP e URL:
POST https://spanner.googleapis.com/v1/projects//instances/ /databases/ :addSplitPoints
Corpo JSON do pedido:
{ "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 o seu pedido, expanda uma destas opções:
Deve receber um código de estado de êxito (2xx) e uma resposta vazia.
Bibliotecas cliente
Go
Java
Node.js
Python
Possíveis cenários de erro
Os seguintes cenários podem resultar num erro ao criar pontos de divisão:
- A divisão ao nível do índice tem um nome de tabela incorreto na entrada.
- O ponto de divisão ao nível da tabela tem mais do que uma chave.
- O ponto de divisão ao 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 da base de dados.
- O pedido contém pontos de divisão duplicados.
Para ver informações sobre quotas e limites, consulte o artigo Quotas e limites.
Veja os pontos divididos
Pode ver todos os pontos de divisão criados na sua base de dados através da Google Cloud consola ou da CLI gcloud:
Consola
Para obter a contagem de pontos de divisão consultando a SPANNER_SYS.USER_SPLIT_POINTS
vista na Google Cloud consola, faça o seguinte:
Abra a página de instâncias do Spanner.
Selecione os nomes da instância do Spanner e da base de dados que quer consultar.
Clique em Spanner Studio no painel de navegação do lado esquerdo.
Introduza a seguinte consulta no campo de texto:
SELECT * FROM SPANNER_SYS.USER_SPLIT_POINTS
Clique em Executar consulta.
É apresentado um resultado semelhante ao seguinte:
TABLE_NAME | INDEX_NAME | INITIATOR | SPLIT_KEY | EXPIRE_TIME |
---|---|---|---|---|
B | CloudAddSplitPointsAPI | T(90,153,4,2024-04-30T17:00:00-07:00,1,2024-05-01,a) | 2025-03-06T09:58:58.007201Z | |
B | T_IDX | CloudAddSplitPointsAPI | Index: T_IDX on T, Index Key: (10), Primary Table Key: (<begin>,<begin>,<begin>,<begin>,<begin>,<begin>,<begin>) | 2025-03-08T07:33:23.861682Z |
B | T_IDX | CloudAddSplitPointsAPI | 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) | 2025-03-08T07:35:25.990007Z |
gcloud
Execute o seguinte comando da CLI gcloud para ver os pontos de divisão na sua base de dados:
gcloud spanner databases splits list DATABASE_ID \
--instance INSTANCE_ID
Substitua as seguintes variáveis quando executar este comando:
- INSTANCE_ID: o ID da instância do Spanner.
- DATABASE_ID: o ID da base de dados do Spanner.
É apresentada uma resposta semelhante à seguinte:
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 fazer expirar um ponto de divisão
Pode definir um tempo de expiração para cada ponto de divisão que criar. Para mais informações, consulte o artigo Expiração do ponto de divisão. Pode fazer expirar pontos de divisão através da CLI do Google Cloud ou das APIs REST.
gcloud
Se quiser fazer expirar pontos de divisão com a CLI gcloud, tem de
criar um ficheiro que contenha todas as divisões que quer fazer expirar e fornecer o respetivo
caminho através do parâmetro splits-file
no comando da CLI gcloud. O ficheiro não pode exceder o limite da API de 100 pontos por pedido de API. Para mais informações, consulte o artigo
Quotas e limites.
O ficheiro tem de 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 ficheiro:
- ObjectType: o tipo de objeto da divisão que quer que expire. Os valores válidos são
TABLE
eINDEX
. - ObjectName: o nome da tabela ou do índice da base de dados.
- SplitValue: o valor do ponto de divisão que quer que expire.
Use as seguintes regras ao criar os valores dos pontos de divisão no ficheiro:
- Os valores de string têm de estar entre aspas simples. Por exemplo,
'splitKeyPart'
- Os valores booleanos podem ser
true
oufalse
. - Os valores do tipo de dados do Spanner
INT64
eNUMERIC
têm de estar entre aspas simples. Por exemplo,'123'
ou'99.99'
. - Todos os outros valores numéricos têm de ser escritos sem aspas simples. Por exemplo,
1.287
. - Os valores de data/hora devem ser fornecidos no formato
'2020-06-18T17:24:53Z'
entre aspas simples. - Os valores divididos têm de estar entre parênteses.
- A ordem dos valores das chaves divididas tem de ser igual à ordem das chaves principais.
- Se o valor dividido precisar de ter uma vírgula, tem de usar o caráter `\` para escapar à vírgula.
- Para dividir os índices, pode fornecer a chave do índice ou o índice completo e a chave da tabela completa.
- Tem de usar sempre a chave completa quando especificar o ponto de divisão.
Segue-se um ficheiro 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 qualquer um dos dados de comandos abaixo, faça as seguintes substituições:
- SPLITS_FILE: o caminho para o ficheiro de divisões.
- INSTANCE_ID: o ID da instância.
- DATABASE_ID: o ID da base de dados.
-
EXPIRATION_DATE:
(opcional) a data de validade dos pontos divididos. Aceita uma 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 qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do projeto.
- INSTANCE_ID: o ID da instância.
- DATABASE_ID: o ID da base de dados.
Método HTTP e URL:
POST https://spanner.googleapis.com/v1/projects//instances/ /databases/ :addSplitPoints
Corpo JSON do pedido:
{ "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 o seu pedido, expanda uma destas opções:
Deve receber um código de estado de êxito (2xx) e uma resposta vazia.