Se você precisar modificar uma grande quantidade de dados da tabela sem bloqueá-la, use o recurso Lockless Change no Data Management (DMS). Esse recurso divide uma única instrução SQL em vários lotes de execução. Isso permite que você modifique os dados da tabela sem bloqueá-la e reduz o impacto das operações DML no desempenho e no espaço do banco de dados. Este tópico descreve como executar alterações de dados sem bloqueio no DMS.
Pré-requisitos
-
Tipos de banco de dados compatíveis:
Motor do banco de dados
Instâncias compatíveis
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)
A instância deve estar no modo de controle Stable Change ou Security Collaboration. Para obter mais informações, consulte Visualize o modo de controle de uma instância.
Limitações
Apenas as instruções UPDATE, DELETE e INSERT...SELECT são compatíveis.
UPDATE e DELETE
|
Restrição |
Detalhes |
|
Escopo da tabela |
Somente uma única tabela |
|
Cláusula WHERE |
Obrigatória. Atualize ou exclua todas as linhas usando |
|
Subconsultas |
Sem suporte |
|
Cláusula LIMIT |
Não compatível: o uso de |
INSERT...SELECT
|
Restrição |
Detalhes |
|
Escopo do SELECT |
Somente uma única tabela |
|
Cláusula WHERE |
Obrigatória na cláusula SELECT. Selecione todas as linhas usando |
|
Cláusulas não permitidas |
|
Procedimento
Faça login no DMS 5.0.
-
Na barra de navegação superior, escolha .
NotaSe você estiver usando o console do DMS no modo simples, clique no ícone
no canto superior esquerdo. No painel de navegação que aparece, escolha . -
Configure os parâmetros do ticket do Lockless Change e clique em Submit. A tabela a seguir descreve alguns parâmetros.
NotaEste exemplo mostra a configuração para uma instância no modo Security Collaboration. Para instâncias nos modos Flexible Management ou Stable Change, configure apenas os parâmetros Database e SQL statements for change.
Parâmetro
Obrigatório
Descrição
Database
Sim
Pesquise e selecione o banco de dados de destino.
NotaVocê precisa ter permissões para alterar dados no banco de dados de destino. Para obter mais informações, consulte Visualize suas permissões.
Business Background
Não
Forneça o contexto da alteração para reduzir a sobrecarga de comunicação.
Execution Method
Sim
Selecione um método de execução para o ticket:
-
Após a aprovação, o solicitante executa a operação.
-
Execução automática após a aprovação.
-
Execução pelo último aprovador.
NotaOs administradores podem modificar a lista de métodos de execução na seção . Para obter mais informações, consulte Configuration management.
Affected rows
Sim
Estime o número de linhas afetadas. Execute uma consulta
COUNTno SQL Console para obter esse número.NotaSe os dados forem gravados continuamente na tabela, conte apenas o número de linhas de dados existentes.
SQL Statements for Change
Sim
Insira as instruções DML, como
UPDATE,DELETEouINSERT_SELECT.NotaSe você inserir instruções DDL, estará executando uma tarefa de alteração de schema sem bloqueio. Para obter mais informações, consulte Perform a lock-free schema change by using a Lockless Change ticket.
SQL Statements for Rollback
Não
Um script reverso para as instruções do parâmetro SQL statements for change. O script deve ser executável.
SQL Text
Não
Este parâmetro aparece apenas caso selecione Text para o parâmetro Rollback SQL. Insira as instruções SQL de rollback, que revertem as instruções SQL de alteração.
Attachment
Não
Este parâmetro aparece apenas caso selecione Attachment para o parâmetro SQL Statements for Rollback. Clique em File para carregar o anexo SQL de rollback.
NotaO anexo pode ser um arquivo .txt, .zip ou .sql. O tamanho máximo do arquivo é de 15 MB.
Change Stakeholder
Não
As partes interessadas especificadas podem visualizar e colaborar no ticket. Os não participantes (exceto administradores e DBAs) não podem visualizá-lo.
Attachments
Não
Carregue anexos para fornecer mais contexto a este ticket.
-
-
Após enviar o ticket, ative a verificação de latência entre primário e secundário, defina um limiar e modifique as instruções SQL.
-
(Opcional) Ative a verificação de latência entre primário e secundário e defina um limiar. Isso evita que a latência excessiva entre primário e secundário afete os failovers da instância.
Na seção Basic Information, clique em chunk option e defina um limiar adequado de latência entre primário e secundário em segundos. Se a latência entre primário e secundário exceder o limiar, o sistema interrompe a execução do SQL.
NotaAtualmente, este recurso está disponível apenas para bancos de dados ApsaraDB RDS for MySQL.
-
(Opcional) Modifique as instruções SQL.
Após o envio do ticket, o sistema valida previamente as instruções SQL. Se a pré-verificação falhar, clique em Edit SQL, edite as instruções com base no motivo da falha e tente novamente.
-
Clique em Submit. Os tickets para instâncias no modo Security Collaboration exigem aprovação com base nas regras configuradas, enquanto os tickets para instâncias no modo Stable Change são aprovados automaticamente.
-
Após a aprovação do ticket, clique em Execute Change na seção Execute da página de detalhes do ticket.
NotaVisualize o progresso da aprovação na seção Approval da página de detalhes do ticket.
-
Configure os parâmetros de execução da tarefa.
Item de configuração
Descrição
Execution Strategy
Running immediately: a opção padrão. A tarefa é executada imediatamente após clicar em Confirm Execution.
Schedule: selecione um horário de início para a tarefa. Após clicar em Confirm Execution, a tarefa é executada no horário especificado.
NotaO horário de execução real de uma tarefa agendada pode ter uma margem de erro de ±1 minuto.
Specify End Time
Especifique um horário de término para a tarefa. Se a tarefa não for concluída até o horário de término especificado, o sistema interrompe a execução das instruções SQL restantes. Isso evita que as tarefas sejam executadas durante os horários de pico e afetem as operações do negócio.
NotaO horário de término real da tarefa pode ter uma margem de erro de ±1 minuto.
Primary/Secondary Node Check
A ativação desta verificação garante a sincronização de dados em tempo real entre as instâncias primária e em espera, alta disponibilidade e recuperação rápida de falhas.
Canary Release Type
A política para executar instruções SQL em lotes.
No Canary Release: o DMS executa automaticamente todas as instruções SQL na tarefa.
Suspend after Executing the First SQL Statement: após a execução bem-sucedida da primeira instrução SQL, o DMS pausa automaticamente a tarefa. Para continuar, clique em Retry. As instruções SQL restantes são então executadas de uma só vez, sem mais pausas.
Suspend after Executing a SQL Statement: a tarefa é pausada automaticamente após a execução de cada instrução SQL. Clique manualmente em Retry para executar a próxima instrução SQL.
-
Clique em Confirm Execution.
NotaQuando uma tarefa pausada é reiniciada, ela recomeça do início.
Na seção Execute, visualize o status de execução da tarefa, as configurações da tarefa, os detalhes e os Scheduling Logs.
Documentos relacionados
-
Após executar uma alteração de dados sem bloqueio, talvez você também precise executar as seguintes operações:
Consulte os dados da tabela na janela SQL. Para obter mais informações, consulte Query data.
Exporte dados do seu banco de dados. Para obter mais informações, consulte Database export.
Exporte conjuntos de resultados SQL. Para obter mais informações, consulte Export SQL result sets.
-
As seguintes operações de API estão relacionadas às alterações de dados sem bloqueio:
FAQ
-
P: O recurso de alteração de dados sem bloqueio é compatível com operações SQL complexas?
R: Não. Por exemplo, não é compatível com
CREATE_INDEXou operações de várias tabelas, como uma instruçãoDELETEque inclui umJOIN. Para obter mais informações sobre os tipos de SQL compatíveis, consulte Limitations. -
P: O Lockless Change do DMS detecta bloqueios de tabela e bloqueios?
R: Quando o DMS executa uma alteração de dados sem bloqueio, ele divide grandes instruções SQL em lotes menores e faz uma pausa após cada lote. Isso evita que os recursos fiquem ocupados por muito tempo. Durante a execução, o DMS não detecta bloqueios de linha antecipadamente. O MySQL ainda bloqueia as linhas modificadas. O impacto geral é mínimo devido aos pequenos lotes e pausas, mas isso não garante que a tabela não será bloqueada. Para uma alteração de schema sem bloqueio, o DMS usa uma tabela temporária para simular sua instrução DDL. Isso valida previamente se a operação causará bloqueio de tabela ou bloqueio. Se a validação determinar que a operação bloqueará a tabela, a validação falhará e uma mensagem será exibida.
-
P: A taxa de verificação de reprodução incremental para uma tarefa de Lockless Change do DMS pode ser ajustada?
R: Sim. Primeiro, na página , pesquise e ative o recurso "Allow adjustment of the playback data verification ratio for lockless change results".
Acesse o ticket DDL correspondente no console.
Na seção de execução, clique em Details.
Encontre o script correspondente e clique em Execution Progress.
A taxa de verificação é exibida na parte inferior. Ajuste a taxa conforme necessário. A unidade é por mil (‰).