Para modificar um grande volume de dados em uma tabela sem bloqueá-la, utilize o recurso Lockless Change no Data Management (DMS). Esse recurso divide uma única instrução SQL em vários lotes para execução, permitindo a alteração dos dados sem bloquear a tabela. Isso reduz o impacto das operações DML no desempenho e no espaço do banco de dados. Este tópico descreve como realizar alterações de dados sem bloqueio no DMS.
Pré-requisitos
-
Tipos de banco 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)
A instância deve estar no modo de controle Stable Change ou Security Collaboration. Para mais informações, consulte Modo de controle.
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 |
|
Subconsultas |
Não suportado |
|
Cláusula LIMIT |
Não suportado — o uso de |
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 |
|
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 em no ícone
no canto superior esquerdo. No painel de navegação exibido, escolha . -
Configure os parâmetros do ticket de Lockless Change e clique em Submit. A tabela a seguir descreve alguns dos 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, é necessário configurar 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ê deve ter permissões para alterar dados no banco de dados de destino. Para mais informações, consulte Visualize suas permissões.
Business Background
Não
Forneça contexto para a alteração a fim de reduzir a sobrecarga de comunicação.
Execution Method
Sim
Selecione um método de execução para o ticket:
-
Após aprovação, o solicitante executa a operação.
-
Executar automaticamente após aprovação.
-
Executado pelo último aprovador.
NotaOs administradores podem modifique a lista de métodos de execução na seção . Para mais informações, consulte Gerenciamento de configuração.
Affected rows
Sim
Estime o número de linhas afetadas. Execute uma consulta
COUNTno SQL Console para obter esse valor.NotaSe houver gravação contínua de dados 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ê insira instruções DDL, estará realizando uma tarefa de alteração de esquema sem bloqueio (DDL lock-free schema change). Para mais informações, consulte Realizar uma alteração de esquema sem bloqueio usando um ticket Lockless Change.
SQL Statements for Rollback
Não
Um script reverso para as instruções em SQL statements for change. O script deve ser executável.
SQL Text
Não
Este parâmetro aparece apenas se você selecione Text para o parâmetro Rollback SQL. Insira as instruções SQL de rollback, que são o inverso das instruções SQL de alteração.
Attachment
Não
Este parâmetro aparece apenas se você selecione Attachment para o parâmetro SQL Statements for Rollback. Clique em File para fazer upload do anexo SQL de rollback.
NotaO anexo pode ser um arquivo .txt, .zip ou .sql. O tamanho máximo do arquivo é 15 MB.
Change Stakeholder
Não
As partes interessadas especificadas podem visualize e colaborar no ticket. Pessoas não listadas como partes interessadas (exceto administradores e DBAs) não podem visualizá-lo.
Attachments
Não
Faça upload de anexos para fornecer mais contexto para este ticket.
-
-
Após envie o ticket, você pode ative a verificação de latência primário-secundário, defina um limiar e modifique as instruções SQL.
-
(Opcional) Ative a verificação de latência primário-secundário e defina um limiar. Isso evita que latências excessivas entre primário e secundário afetem os failovers da instância.
Na seção Basic Information, clique em chunk option e defina um limiar razoável de latência primário-secundário em segundos. Se a latência primário-secundário exceder o limiar, a execução do SQL será interrompida.
NotaAtualmente, este recurso está disponível apenas para bancos de dados ApsaraDB RDS for MySQL.
-
(Opcional) Modifique as instruções SQL.
Depois de envie a solicitação, o sistema realiza automaticamente uma pré-verificação das 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. Tickets para instâncias no modo Security Collaboration exigem aprovação com base nas regras configuradas, enquanto 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.
NotaÉ possível acompanhar 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: Opção padrão. A tarefa é executada imediatamente após você clique em Confirm Execution.
Schedule: Selecione um horário de início para a tarefa. Após clique em Confirm Execution, a tarefa será executada no horário especificado.
NotaO tempo real de execução 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. Caso a tarefa não seja concluída até o horário definido, o sistema interrompe a execução das tarefas SQL restantes. Isso evita que tarefas sejam executadas durante horários de pico, afetando as operações comerciais.
NotaO horário real de término da tarefa pode ter uma margem de erro de ±1 minuto.
Primary/Secondary Node Check
Ativar esta verificação garante a sincronização de dados em tempo real entre as instâncias primária e standby, alta disponibilidade e recuperação rápida de falhas.
Canary Release Type
A política para execute instruções SQL em lotes.
No Canary Release: O DMS executa automaticamente todas as instruções SQL da 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 pausas adicionais.
Suspend after Executing a SQL Statement: A tarefa pausa automaticamente após a execução de cada instrução SQL. É necessário clique manualmente em Retry para execute 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, os detalhes e os Scheduling Logs.
Documentos relacionados
-
Após realizar uma alteração de dados sem bloqueio, talvez seja necessário execute as seguintes operações:
Consultar dados da tabela na janela SQL. Para mais informações, consulte Consultar dados.
Exportar dados do seu banco de dados. Para mais informações, consulte Exportação de banco de dados.
Exportar conjuntos de resultados SQL. Para mais informações, consulte Exportar conjuntos de resultados SQL.
-
As seguintes operações de API estão relacionadas a alterações de dados sem bloqueio:
Perguntas frequentes
-
P: O recurso de alteração de dados sem bloqueio suporta operações SQL complexas?
R: Não. Por exemplo, ele não suporta
CREATE_INDEXou operações com múltiplas tabelas, como uma instruçãoDELETEque inclui umJOIN. Para mais informações sobre os tipos de SQL suportados, consulte Limitações. -
P: O Lockless Change do DMS detecta bloqueios de tabela e obstruções?
R: Quando o DMS realiza 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 a ocupação prolongada de recursos. Durante a execução, o DMS não realiza detecção prévia de bloqueios de linha. O MySQL ainda bloqueia as linhas modificadas. O impacto geral é mínimo devido aos pequenos lotes e às pausas, mas isso não garante que a tabela não será bloqueada. Para uma alteração de esquema sem bloqueio, o DMS usa uma tabela temporária para simular sua instrução DDL. Isso pré-verifica se a operação causará bloqueio ou obstrução da tabela. Se a verificação determinar que a operação bloqueará a tabela, a validação falhará e uma mensagem será exibida.
-
P: É possível ajustar a verificação de reprodução incremental para uma tarefa Lockless Change do DMS?
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.
Localize 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 (‰).