Práticas recomendadas de Linguagem de manipulação de dados

Nesta página, descrevemos as práticas recomendadas para o uso da linguagem de manipulação de dados (DML, na sigla em inglês) e da DML particionada.

Use uma cláusula WHERE para reduzir o número de linhas bloqueadas

As instruções DML são executadas dentro de transações de leitura e gravação. O Cloud Spanner adquire bloqueios de leitura compartilhados em todas as linhas que ele lê, incluindo linhas que podem não corresponder à condição de filtro da cláusula WHERE. O Cloud Spanner adquire bloqueios exclusivos nas linhas que ele modifica. Como resultado, o Cloud Spanner pode bloquear um grande número de intervalos de linhas ou uma tabela inteira, mesmo que a transação modifique apenas algumas das linhas lidas. Para bloquear menos linhas, defina o escopo da cláusula WHERE nas instruções UPDATE e DELETE para pequenos intervalos de chave primária, incluindo as colunas de chave primária na cláusula WHERE.

Não use instruções DML e mutações na mesma transação

O Cloud Spanner armazena em buffer inserções, atualizações e exclusões realizadas usando instruções DML no lado do servidor, e os resultados são visíveis para instruções SQL e DML subsequentes na mesma transação. Esse comportamento é diferente da API Mutation, em que o Cloud Spanner armazena em buffer as mutações no lado do cliente e as envia para o lado do servidor como parte da operação de confirmação. Como resultado, as mutações na solicitação de confirmação não são visíveis para as instruções SQL ou DML na mesma transação.

Você pode querer combinar instruções DML e mutações na mesma transação porque algumas operações são aceitas apenas na API Mutation. Um exemplo é insert_or_update. Se uma transação contiver instruções DML e mutações na solicitação de confirmação, o Cloud Spanner executará as instruções DML antes das mutações. Para não precisar incluir a ordem de execução no código da biblioteca de cliente, use instruções DML ou as mutações em uma única transação, mas não ambas. Se você usar ambas, será preciso armazenar em buffer apenas no final da transação.

Use a função PENDING_COMMIT_TIMESTAMP para gravar carimbos de data/hora de confirmação

Use a função PENDING_COMMIT_TIMESTAMP para gravar o carimbo de data/hora de confirmação em uma instrução DML. O Cloud Spanner seleciona o carimbo de data/hora de confirmação quando a transação é confirmada.

DML particionada e funções date e timestamp

A DML particionada usa uma ou mais transações que podem ser executadas e confirmadas em momentos diferentes. Se você usar as funções date ou timestamp, as linhas modificadas poderão conter valores diferentes.

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Cloud Spanner