PolarDB for MySQL introduz o recurso Online Copy DDL, que reduz as interrupções nos negócios causadas pelas operações tradicionais de Copy DDL (como MODIFY COLUMN e conversões entre tabelas padrão e particionadas). Essas operações mantêm um bloqueio MDL durante toda a execução.
Informações básicas
Durante a execução padrão do Copy DDL, o MySQL mantém um bloqueio MDL-SNW (Shared No Write) que impede continuamente todas as operações de escrita (INSERT/UPDATE/DELETE) na tabela. Esse comportamento pode causar acúmulo de conexões e, em casos graves, levar ao colapso do sistema. O Online Copy DDL otimiza o mecanismo de bloqueio durante a fase de cópia de dados. Ele permite operações simultâneas de leitura e escrita e garante a consistência dos dados, o que melhora significativamente a disponibilidade dos negócios durante a execução de DDL.
Escopo
Versão 8.0.2 do PolarDB for MySQL com revisão 8.0.2.2.33.1 ou posterior. Para confirmar a versão do cluster, consulte o número da versão.
O recurso Online Copy DDL está atualmente em lançamento canário. Para utilizá-lo, acesse o Quota Center, localize o nome da cota pelo ID polarm_82_online_copy_ddl e clique em Request na coluna Operation para ativar o recurso. Ao enviar a solicitação, informe o ID do cluster que você deseja habilitar (no formato pc-xxx).
Limites
Operações compatíveis:
Conversões entre tabelas padrão e tabelas particionadas.
Instruções
MODIFY COLUMN. Não há suporte para modificar a posição da coluna simultaneamente.
Operações ou objetos incompatíveis:
Tabelas com colunas JSON.
Tabelas com índices espaciais (SPATIAL INDEX).
Tabelas com Global Secondary Indexes (GSIs).
Tabelas com particionamento híbrido.
Sessões que executaram
LOCK TABLESna tabela.Instruções DDL que especificam explicitamente
ALGORITHM=COPYcomLOCK=SHAREDouLOCK=EXCLUSIVE.
Antes de executar uma operação DDL, utilize o recurso EXPLAIN DDL para verificar se a operação atual é compatível com o Online Copy DDL.
Uso
Após solicitar uma cota, os seguintes parâmetros são ativados automaticamente para uso do Online Copy DDL. Não é possível modificar esses parâmetros manualmente neste momento.
Parameter | Level | Description |
| Global | Chave principal do Online Copy DDL. Valores válidos:
|
| Global | Chave do Online Copy DDL aplicável apenas a
|
Método 1: Especificar explicitamente o algoritmo (recomendado)
Especifique ALGORITHM=COPY, LOCK=NONE para forçar o uso do Online Copy DDL:
CREATE TABLE t(a int);
ALTER TABLE t MODIFY COLUMN a BIGINT DEFAULT NULL, ALGORITHM=COPY, LOCK=NONE;
Se o erro ERROR 1846 (0A000): LOCK=NONE is not supported. Reason: COPY algorithm requires a lock. Try LOCK=SHARED. for retornado ao usar as instruções acima, não será possível realizar a modificação atual do tipo de coluna com o algoritmo Online Copy DDL. Verifique se o parâmetro loose_polar_support_online_copy_ddl_algorithm está ativado e revise atentamente os limites.
Método 2: Selecionar automaticamente o algoritmo ideal (comportamento padrão)
Se nenhum algoritmo for especificado ou se DEFAULT for utilizado, o sistema selecionará automaticamente o método de execução mais adequado:
-- Method 1: Explicitly specify DEFAULT
ALTER TABLE t MODIFY COLUMN a BIGINT DEFAULT NULL, ALGORITHM=DEFAULT, LOCK=DEFAULT;
-- Method 2: Omit the clauses entirely (equivalent)
ALTER TABLE t MODIFY COLUMN a BIGINT DEFAULT NULL;
O sistema tenta primeiro o Online Copy DDL. Se as condições não forem atendidas, ele reverte automaticamente para o Copy DDL tradicional (que bloqueia a tabela) para garantir a conclusão da operação DDL.