Todos os produtos
Search
Central de documentação

Data Management:Overview

Última atualização: Jun 27, 2026

A linguagem de manipulação de dados (DML) sem bloqueio no Data Management (DMS) permite executar instruções UPDATE, DELETE e INSERT...SELECT em grandes conjuntos de dados sem bloquear tabelas ou degradar o desempenho do banco de dados. O mecanismo do DMS divide automaticamente os dados de destino em lotes e executa a instrução lote a lote, com uma breve pausa entre cada execução para proteger a replicação entre primário e secundário e reduzir a carga do banco de dados.

Contexto

Com o crescimento dos dados de negócios, é comum precisar limpar dados históricos ou atualizar grandes partes de uma tabela. Duas abordagens frequentes apresentam riscos significativos:

  • Criação de scripts para divisão de dados: O uso da cláusula LIMIT para paginar exclusões ou atualizações é um erro frequente. Como LIMIT sem varredura por índice força uma varredura completa da tabela, o bloqueio ainda pode ocorrer. Mesmo com uma divisão correta, um intervalo de lotes mal ajustado pode causar atrasos graves na replicação entre os bancos de dados primário e secundário.

  • Extração manual por DBA: Dividir manualmente grandes conjuntos de dados consome tempo, está sujeito a erros e torna-se difícil de ajustar durante a execução.

Além dos riscos mencionados, dois modos de falha adicionais podem ocorrer ao operar diretamente em tabelas grandes:

  • Uma única instrução SQL que afeta muitas linhas pode fazer com que o número de entradas de log exceda o limite superior, resultando na falha total da instrução.

  • A execução de uma instrução SQL sem o uso de índices especificados pode causar bloqueio de tabela, aumentar a carga do banco de dados e, em casos graves, levar a falhas nos negócios.

A DML sem bloqueio elimina ambos os riscos ao automatizar a divisão em lotes e o controle de fluxo dentro do DMS.

Funcionamento

A DML sem bloqueio processa uma única instrução SQL em três etapas:

  1. Divisão de dados — O mecanismo do DMS analisa a instrução e divide as linhas correspondentes em vários lotes com base em intervalos de índice, evitando varreduras completas da tabela.

  2. Execução em lotes — O DMS executa a instrução em um lote por vez, mantendo apenas bloqueios de curta duração no nível da linha durante cada lote.

  3. Intervalo de espera — Após a conclusão de cada lote, o DMS aguarda brevemente antes de iniciar o próximo. Esse intervalo permite que o banco de dados secundário acompanhe a replicação, mantendo o atraso entre primário e secundário dentro de limites aceitáveis.

Benefícios

  • As operações de alteração de grandes volumes de dados não afetam seus negócios.

  • Redução do impacto no desempenho e no armazenamento do banco de dados.

  • Garantia de eficiência na execução mesmo para grandes volumes de alterações de dados.

Bancos de dados suportados

Mecanismo de banco de dados

Instâncias suportadas

MySQL

ApsaraDB RDS for MySQL, PolarDB for MySQL, MyBase for MySQL, PolarDB for Xscale, bancos de dados MySQL de terceiros

PostgreSQL

ApsaraDB RDS for PostgreSQL, PolarDB for PostgreSQL, MyBase for PostgreSQL, bancos de dados PostgreSQL de terceiros

MariaDB

ApsaraDB for MariaDB, bancos de dados MariaDB de terceiros

OceanBase

ApsaraDB for OceanBase no modo MySQL

Compatível com Oracle

PolarDB for PostgreSQL (Compatible with Oracle)

Limitações

Somente as instruções UPDATE, DELETE e INSERT...SELECT são suportadas.

UPDATE e DELETE

Restrição

Detalhes

Escopo da tabela

Apenas tabela única

Cláusula WHERE

Obrigatória. Para atualizar ou excluir todas as linhas, use WHERE 1=1

Subconsultas

Não suportadas

Cláusula LIMIT

Não suportada — o uso de LIMIT para paginação manual força uma varredura completa da tabela, causando o bloqueio que este recurso foi projetado para evitar

INSERT...SELECT

Restrição

Detalhes

Escopo do SELECT

Apenas tabela única

Cláusula WHERE

Obrigatória na cláusula SELECT. Para selecionar todas as linhas, use WHERE 1=1

Cláusulas não permitidas

LIMIT, ORDER BY e GROUP BY não são suportadas na cláusula SELECT

Casos de uso

  • Limpeza de dados históricos — Exclua linhas desnecessárias sem bloquear leituras ou gravações na tabela de produção.

  • Atualização de todas as linhas — Aplique uma atualização de coluna em toda a tabela sem causar atrasos na replicação ou interrupção do serviço.

Próximos passos