Todos os produtos
Search
Central de documentação

PolarDB:DDL operation guide for PolarDB for MySQL

Última atualização: Jun 28, 2026

O PolarDB for MySQL suporta operações DDL em seis categorias: índices, chaves primárias, colunas, tabelas, chaves estrangeiras, colunas geradas e partições. Antes de executar qualquer alteração de schema em produção, entenda o comportamento de cada operação: se ela bloqueia a tabela, aciona uma reconstrução completa ou é concluída em segundos modificando apenas metadados.

Riscos associados a operações DDL

Uma única instrução ALTER TABLE pode causar os seguintes efeitos:

  • Manter um bloqueio exclusivo na tabela durante toda a execução, impedindo leituras e gravações

  • Acionar uma reconstrução completa da tabela, processo que pode levar horas em tabelas grandes

  • Provocar filas de conexão: consultas subsequentes acumulam-se atrás do DDL, resultando em timeouts ou interrupções na aplicação

  • Elevar abruptamente o uso de IOPS e CPU, afetando outras cargas de trabalho no mesmo cluster

O PolarDB for MySQL recebeu melhorias significativas de desempenho e comportamento de bloqueio em operações DDL ao longo das versões. Este guia ajuda a identificar o perfil de risco de cada operação antes da execução.

Algoritmos de execução de DDL

O PolarDB seleciona automaticamente o algoritmo mais eficiente nesta ordem: INSTANT → INPLACE → COPY. Entender cada algoritmo permite prever o impacto de uma operação DDL.

Algoritmo

Funcionamento

Impacto

INSTANT

Modifica apenas metadados no dicionário de dados. Nenhum dado é copiado ou reconstruído.

Concluído em segundos, independentemente do tamanho da tabela. Permite leituras e gravações simultâneas.

INPLACE

Reconstrói ou reorganiza dados dentro do mecanismo de armazenamento. A maioria das operações INPLACE permite leituras e gravações simultâneas. Algumas operações INPLACE (por exemplo, RENAME TABLE e ADD COMMENT) alteram apenas metadados e são concluídas em segundos.

Impacto mínimo. Geralmente permite DML simultâneo.

COPY

Copia todos os dados da tabela original para uma nova tabela. Mantém um bloqueio shared-no-write (SNW) durante todo o processo.

Bloqueia todas as gravações durante toda a execução. Operações de leitura continuam permitidas.

Operações DDL que permitem leituras e gravações simultâneas durante a execução são chamadas de Online DDL. O Online DDL minimiza o impacto em ambientes de produção.

Controle a seleção de algoritmos com cláusulas ALTER TABLE

Para substituir a seleção automática de algoritmo ou impor um comportamento específico de bloqueio, use as cláusulas ALGORITHM e LOCK no comando ALTER TABLE:

Cláusula ALGORITHM — força um algoritmo específico. Se a operação DDL não suportar o algoritmo especificado, o sistema retornará um erro imediatamente. Valores válidos: DEFAULT, INSTANT, INPLACE, COPY.

Cláusula LOCK — controla o acesso simultâneo durante a execução do DDL. Valores válidos:

Valor

Comportamento

DEFAULT

Concede o nível máximo de acesso simultâneo suportado pelo tipo de DDL.

NONE

Exige leituras e gravações simultâneas. Retorna erro se não houver suporte.

SHARED

Permite leituras simultâneas, mas bloqueia gravações. Retorna erro se não houver suporte para leituras simultâneas.

EXCLUSIVE

Bloqueia todas as leituras e gravações simultâneas.

Especificar LOCK impede que a tabela fique inacessível durante a execução: se o comportamento real de bloqueio não atender ao requisito especificado, a operação será interrompida imediatamente.

O PolarDB suporta DDL paralelo para operações em tabelas grandes, como criação de índices e reconstrução de tabelas. O DDL paralelo utiliza múltiplas threads e pode aumentar a velocidade de execução em até 15–20 vezes em comparação à execução single-thread. Para mais informações, consulte DDL paralelo .

Fale conosco

Se tiver dúvidas sobre operações DDL, entre em contato com o suporte técnico.

Visualize o comportamento do DDL antes da execução

Como o comportamento do DDL pode ser afetado pela estrutura da tabela, configurações de parâmetros e recursos ativados, o comportamento real pode diferir das tabelas apresentadas neste guia. Use EXPLAIN DDL para visualizar exatamente como uma instrução DDL será executada antes de rodá-la.

{ EXPLAIN | DESCRIBE | DESC } ALTER TABLE ...

O comando EXPLAIN DDL retorna:

  • Se o DDL pode ser executado com sucesso

  • O algoritmo que será utilizado (INSTANT, INPLACE ou COPY)

  • Se haverá reconstrução completa da tabela

  • Se o DML simultâneo é permitido durante a execução

  • Se a execução será bloqueada por transações não confirmadas

  • Se há suporte para aceleração via DDL paralelo e, em caso afirmativo, o grau de paralelismo

Para mais informações, consulte EXPLAIN DDL.

Comportamento do DDL por operação

As tabelas abaixo mostram o comportamento do DDL nas diferentes versões do PolarDB for MySQL. Quatro colunas descrevem o comportamento de cada operação:

  • DML simultâneo — indica se leituras e gravações simultâneas são permitidas durante a execução

  • Reconstrói tabela — indica se a operação aciona uma reconstrução completa da tabela (processo demorado para tabelas grandes)

  • Apenas metadados — indica se a operação modifica apenas metadados (concluída em segundos)

  • DDL paralelo — indica se a operação suporta aceleração via DDL paralelo

Operações de índice

Operação

DML simultâneo

Reconstrói tabela

Apenas metadados

DDL paralelo

Criar um índice secundário

Sim

Não

Não

8.0.2 / 8.0.1 / 5,7: Suportado; 5,6: Não suportado

Excluir um índice secundário

Sim

Não

Sim

Não aplicável

Renomear um índice secundário

Sim

Não

Sim

Não aplicável

Adicionar um índice full-text (FULLTEXT)

Não

Não¹

Não

Não suportado

Adicionar um índice espacial (SPATIAL)

Não

Não

Não

Não suportado

¹ Ao adicionar o primeiro índice full-text a uma tabela, uma reconstrução adicional da tabela é acionada se não existir uma coluna FTS_DOC_ID definida pelo usuário.

Operações de chave primária

Operação

DML simultâneo

Reconstrói tabela

Apenas metadados

DDL paralelo

Adicionar uma chave primária

Sim¹

Sim

Não

8.0.2 / 8.0.1 / 5,7: Suportado; 5,6: Não suportado

Excluir uma chave primária

Não

Sim

Não

Não suportado

Excluir a chave primária original e adicionar uma nova

Sim¹

Sim

Não

8.0.2 / 8.0.1 / 5,7: Suportado; 5,6: Não suportado

¹ O DML simultâneo é permitido apenas quando o parâmetro de cluster sql_mode inclui STRICT_TRANS_TABLES ou STRICT_ALL_TABLES.

Operações de coluna

As tabelas abaixo listam o comportamento específico de cada versão. Consulte a seção Limitações e exceções após as tabelas para restrições importantes sobre adição instantânea de colunas, extensão de comprimento VARCHAR e conversão de conjunto de caracteres.

PolarDB for MySQL 8.0.2

Operação

DML simultâneo

Reconstrói tabela

Apenas metadados

DDL paralelo

Adicionar uma coluna

Sim

Não¹

Sim¹

Suportado¹

Excluir uma coluna

Sim

Sim

Não

Suportado

Renomear uma coluna

Sim

Não

Sim

Não aplicável

Reordenar colunas

Sim

Sim

Não

Suportado

Definir o valor padrão de uma coluna

Sim

Não

Sim

Não aplicável

Modificar o comentário de uma coluna

Sim

Não

Sim

Não aplicável

Modificar o tipo de uma coluna

Não

Sim

Não

Não suportado

Estender o comprimento VARCHAR

Sim²

Não

Sim

Não aplicável

Alterar o conjunto de caracteres de UTF8mb3 para UTF8mb4

Não

Não³

Sim³

Não suportado

Excluir o valor padrão de uma coluna

Sim

Não

Sim

Não aplicável

Modificar o valor de autoincremento

Sim

Não

Sim

Não aplicável

Alterar uma coluna para NULL

Sim

Sim

Não

Suportado

Alterar uma coluna para NOT NULL

Não

Sim

Não

Não suportado

Modificar a definição de uma coluna ENUM/SET

Sim

Não

Sim⁴

Não aplicável

PolarDB for MySQL 8.0.1

Operação

DML simultâneo

Reconstrói tabela

Apenas metadados

DDL paralelo

Adicionar uma coluna

Sim

Não¹

Sim¹

Suportado¹

Excluir uma coluna

Sim

Sim

Não

Suportado

Renomear uma coluna

Sim

Não

Sim

Não aplicável

Reordenar colunas

Sim

Sim

Não

Suportado

Definir o valor padrão de uma coluna

Sim

Não

Sim

Não aplicável

Modificar o comentário de uma coluna

Sim

Não

Sim

Não aplicável

Modificar o tipo de uma coluna

Não

Sim

Não

Não suportado

Estender o comprimento VARCHAR

Sim²

Não

Sim

Não aplicável

Alterar o conjunto de caracteres de UTF8mb3 para UTF8mb4

Não

Não³

Sim³

Não suportado

Excluir o valor padrão de uma coluna

Sim

Não

Sim

Não aplicável

Modificar o valor de autoincremento

Sim

Não

Sim

Não aplicável

Alterar uma coluna para NULL

Sim

Sim

Não

Suportado

Alterar uma coluna para NOT NULL

Não

Sim

Não

Não suportado

Modificar a definição de uma coluna ENUM/SET

Sim

Não

Sim⁴

Não aplicável

PolarDB for MySQL 5,7

Operação

DML simultâneo

Reconstrói tabela

Apenas metadados

DDL paralelo

Adicionar uma coluna

Sim

Não¹

Sim¹

Suportado¹

Excluir uma coluna

Sim

Sim

Não

Suportado

Renomear uma coluna

Sim

Não

Sim

Não aplicável

Reordenar colunas

Sim

Sim

Não

Suportado

Definir o valor padrão de uma coluna

Sim

Não

Sim

Não aplicável

Modificar o comentário de uma coluna

Sim

Não

Sim

Não aplicável

Modificar o tipo de uma coluna

Não

Sim

Não

Não suportado

Estender o comprimento VARCHAR

Sim²

Não

Sim

Não aplicável

Alterar o conjunto de caracteres de UTF8mb3 para UTF8mb4

Não

Sim

Não

Não suportado

Excluir o valor padrão de uma coluna

Sim

Não

Sim

Não aplicável

Modificar o valor de autoincremento

Sim

Não

Sim

Não aplicável

Alterar uma coluna para NULL

Sim

Sim

Não

Suportado

Alterar uma coluna para NOT NULL

Não

Sim

Não

Não suportado

Modificar a definição de uma coluna ENUM/SET

Sim

Não

Sim³

Não aplicável

PolarDB for MySQL 5,6

Operação

DML simultâneo

Reconstrói tabela

Apenas metadados

DDL paralelo

Adicionar uma coluna

Sim

Não¹

Sim¹

Não suportado

Excluir uma coluna

Sim

Sim

Não

Não suportado

Renomear uma coluna

Sim

Não

Sim

Não aplicável

Reordenar colunas

Sim

Sim

Não

Não suportado

Definir o valor padrão de uma coluna

Sim

Não

Sim

Não aplicável

Modificar o comentário de uma coluna

Sim

Não

Sim

Não aplicável

Modificar o tipo de uma coluna

Não

Sim

Não

Não suportado

Estender o comprimento VARCHAR

Não

Sim

Não

Não suportado

Alterar o conjunto de caracteres de UTF8mb3 para UTF8mb4

Não

Sim

Não

Não suportado

Excluir o valor padrão de uma coluna

Sim

Não

Sim

Não aplicável

Modificar o valor de autoincremento

Sim

Não

Sim

Não aplicável

Alterar uma coluna para NULL

Sim

Sim

Não

Não suportado

Alterar uma coluna para NOT NULL

Não

Sim

Não

Não suportado

Modificar a definição de uma coluna ENUM/SET

Sim

Não

Sim²

Não aplicável

Limitações e exceções

Adição instantânea de coluna

Quando o recurso de adição instantânea de coluna está disponível, adicionar uma coluna modifica apenas metadados e é concluído em segundos, independentemente do tamanho da tabela. O comportamento varia conforme a versão:

Versão

Como ativar

Observações adicionais

8.0.2

Ativado por padrão

8.0.1

Ativado por padrão

Se a tabela possuir um índice columnstore, defina loose_imci_enable_add_column_instant_ddl como ON. O PolarDB então reconstrói o índice columnstore de forma assíncrona em segundo plano. Durante a reconstrução, o índice columnstore fica temporariamente indisponível.

5,7

Defina loose_innodb_support_instant_add_column como ON

5,6

Defina loose_innodb_support_instant_add_column como ON

Atualmente em canary release. Para ativar, acesse o Quota Center, pesquise pelo ID de cota polardb_mysql_iac_56 e clique em Apply. Não suportado em tabelas particionadas.

Todas as versões compartilham as seguintes restrições:

  • Colunas só podem ser adicionadas ao final da tabela.

  • Se a tabela não tiver chave primária, defina implicit_primary_key como OFF para evitar falha na operação devido a uma chave primária implícita no final da tabela.

  • Não suportado em tabelas compactadas (ROW_FORMAT=COMPRESSED), tabelas com índices full-text ou tabelas temporárias.

Quando a adição instantânea de coluna não é suportada, o sistema recorre ao algoritmo INPLACE, acionando uma reconstrução da tabela. Leituras e gravações simultâneas ainda são permitidas durante a reconstrução, e o DDL paralelo pode ser usado para acelerar o processo.

Para mais informações, consulte adição instantânea de coluna.

Extensão de comprimento VARCHAR

O PolarDB armazena o comprimento de uma coluna VARCHAR usando 1 byte para colunas de até 255 bytes e 2 bytes para colunas de 256 bytes ou mais. Estender uma coluna VARCHAR modifica apenas metadados quando a extensão permanece na mesma faixa de comprimento (0–255 bytes ou de 256 bytes para um tamanho maior). Se a extensão cruzar o limite — de menos de 256 bytes para 256 bytes ou mais — o PolarDB usa o algoritmo COPY por padrão, bloqueando a tabela durante toda a duração. Operações de gravação são bloqueadas; leituras continuam permitidas.

Para verificar se uma modificação VARCHAR se qualifica para uma alteração apenas de metadados, especifique ALGORITHM=INPLACE. Se o algoritmo INPLACE não for suportado, o sistema retornará um erro imediatamente em vez de recorrer ao COPY:

ALTER TABLE table_name ALGORITHM=INPLACE, CHANGE COLUMN c1 c1 VARCHAR(256);
ERROR 0A000: ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY.

Para evitar essa situação no futuro, defina o comprimento máximo das colunas VARCHAR como 256 bytes ou mais ao projetar seu schema.

Alteração de conjunto de caracteres de UTF8mb3 para UTF8mb4

Na versão 8.0.2, alterar o conjunto de caracteres de uma coluna de UTF8mb3 para UTF8mb4 modifica apenas metadados quando todas as condições a seguir são atendidas:

  • O tipo da coluna é CHAR, VARCHAR, ENUM ou TEXT.

  • Não existe índice na coluna modificada.

  • O comprimento máximo de armazenamento da coluna está na mesma faixa antes e depois da conversão (ambos menores que 256 bytes ou ambos com 256 bytes ou mais).

Na versão 8.0.1, aplicam-se as mesmas condições e, adicionalmente, o parâmetro loose_innodb_support_instant_modify_charset deve estar definido como ON.

Nas versões 5,7 e 5,6, o algoritmo COPY é sempre utilizado, reconstruindo a tabela durante toda a duração.

Se as condições não forem atendidas nas versões 8.0.2 ou 8.0.1, o algoritmo COPY será usado. Para confirmar se uma alteração se qualifica como operação apenas de metadados, especifique ALGORITHM=INPLACE. Se não houver suporte, o sistema retornará um erro imediatamente:

ALTER TABLE test MODIFY COLUMN b char(1) CHARACTER SET utf8mb4 DEFAULT NULL, ALGORITHM=INPLACE;
ERROR 1846 (0A000): ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY.

Alterações na definição de colunas ENUM/SET

Modificar uma coluna ENUM ou SET altera apenas metadados quando o tamanho de armazenamento do tipo de dados não muda e você acrescenta elementos ao final do ENUM ou SET. Qualquer outra alteração exige o algoritmo COPY para reconstruir a tabela.

Operações de tabela

Operação

DML simultâneo

Reconstrói tabela

Apenas metadados

DDL paralelo

Modificar ROW_FORMAT

Sim

Sim

Não

8.0.2 / 8.0.1 / 5,7: Suportado; 5,6: Não suportado

Modificar KEY_BLOCK_SIZE

Sim

Sim

Não

8.0.2 / 8.0.1 / 5,7: Suportado; 5,6: Não suportado

Definir estatísticas persistentes

Sim

Não

Sim

Não aplicável

Declarar um conjunto de caracteres

Sim

Não

Sim

Não aplicável

Converter um conjunto de caracteres

Não

Sim

Não

Não suportado

Otimizar uma tabela¹

Sim

Sim

Não

8.0.2 / 8.0.1 / 5,7: Suportado; 5,6: Não suportado

Reconstruir uma tabela

Sim

Sim

Não

8.0.2 / 8.0.1 / 5,7: Suportado; 5,6: Não suportado

Renomear uma tabela

Sim

Não

Sim

Não aplicável

Modificar o comentário de uma tabela

Sim

Não

Sim

Não aplicável

¹ Ao desfragmentar uma tabela com ALTER TABLE table_name ENGINE=InnoDB, ALGORITHM=INPLACE, LOCK=NONE, o algoritmo INPLACE não é suportado para tabelas com índices full-text.

Operações de coluna gerada

O PolarDB for MySQL 5,6 não suporta colunas geradas.

As versões 8.0.2, 8.0.1 e 5,7 possuem comportamento idêntico:

Operação

DML simultâneo

Reconstrói tabela

Apenas metadados

DDL paralelo

Adicionar uma coluna STORED

Não¹

Sim

Não

Não suportado

Alterar a ordem de uma coluna STORED

Não

Sim

Não

Não suportado

Excluir uma coluna STORED

Sim

Sim

Não

Suportado

Adicionar uma coluna VIRTUAL

Sim

Não

Sim

Não aplicável

Alterar a ordem de uma coluna VIRTUAL

Não

Sim

Não

Não suportado

Excluir uma coluna VIRTUAL

Sim

Não

Sim

Não aplicável

¹ Adicionar uma coluna STORED envolve a camada SQL/Server, portanto o Online DDL não é suportado.

Operações de chave estrangeira

O comportamento é idêntico em todas as versões (8.0.2, 8.0.1, 5,7, 5,6):

Operação

DML simultâneo

Reconstrói tabela

Apenas metadados

DDL paralelo

Adicionar uma chave estrangeira

Sim¹

Não¹

Sim¹

Não aplicável

Excluir uma chave estrangeira

Sim¹

Não¹

Sim¹

Não aplicável

¹ O DDL INPLACE é suportado apenas quando foreign_key_checks está desativado e apenas metadados são modificados. Caso contrário, apenas o algoritmo COPY é suportado, bloqueando a tabela durante toda a duração.

Operações em tabelas particionadas

PolarDB for MySQL 8.0.2

Operação

DML simultâneo

Reconstrói tabela

Apenas metadados

DDL paralelo

Adicionar uma partição (ADD)

Sim¹

Não²

Sim

Não suportado

Excluir uma partição (DROP)

Sim¹

Não²

Não

Não suportado

Descartar um tablespace de partição (DISCARD)

Não

Não

Não

Não suportado

Importar um tablespace de partição (IMPORT)

Não

Não

Não

Não suportado

Truncar uma partição (TRUNCATE)

Sim

Não

Não

Não suportado

Mesclar partições (COALESCE)

Não

Sim³

Não

Não suportado

Reorganizar uma partição (REORGANIZE)

Sim¹

Não⁴

Não

Não suportado

Trocar uma partição (EXCHANGE)

Sim¹

Não

Sim

Não suportado

Analisar uma partição (ANALYZE)

Sim

Não

Não⁵

Não suportado

Verificar uma partição (CHECK)

Sim

Não

Não⁶

Não suportado

Otimizar uma partição (OPTIMIZE)

Sim⁷

Sim⁷

Não

Suportado⁷

Reconstruir uma partição (REBUILD)

Sim¹

Não⁴

Não

Não suportado

Reparar uma partição (REPAIR)

Sim

Não⁸

Não

Não suportado

Converter uma tabela em tabela particionada

Não

Sim

Sim⁹

Não suportado

Converter uma tabela particionada em tabela padrão

Não

Sim

Não

Não suportado

Criar um índice parcial

Sim

Não¹⁰

Não

Suportado

¹ Quando loose_partition_level_mdl_enabled está definido como true, bloqueios de metadados (MDL) no nível de partição garantem que operações DDL não afetem o DML em partições não impactadas. Para mais informações, consulte Manutenção online de partições.

² Para tabelas particionadas por RANGE e LIST, adicionar ou excluir partições não exige reconstrução da tabela. Para tabelas particionadas por HASH e KEY, adicionar partições exige reconstrução da tabela. Não há suporte para exclusão de partições em tabelas particionadas por HASH e KEY.

³ Apenas partições HASH e KEY são suportadas.

⁴ Reorganizar ou reconstruir uma partição reconstrói apenas as partições especificadas que exigem redistribuição e reconstrução de dados. Outras partições não são afetadas.

⁵ Analisar uma partição modifica apenas estatísticas, não metadados ou dados da tabela.

⁶ Verificar uma partição não modifica metadados nem dados.

⁷ Ao executar OPTIMIZE PARTITION em uma tabela InnoDB, toda a tabela particionada é reconstruída. Leituras e gravações são permitidas durante a reconstrução. Defina innodb_parallel_build_primary_index como ON para usar DDL paralelo e acelerar a reconstrução.

⁸ Reparar uma partição reconstrói apenas as partições especificadas que necessitam de reparo.

⁹ A conversão instantânea suporta apenas a conversão rápida de uma tabela padrão em uma tabela particionada por range.

¹⁰ O PolarDB for MySQL suporta a criação e exclusão de índices no nível de partição. Para mais informações, consulte Índice parcial.

PolarDB for MySQL 8.0.1

Operação

DML simultâneo

Reconstrói tabela

Apenas metadados

DDL paralelo

Adicionar uma partição (ADD)

Não

Não¹

Sim

Não suportado

Excluir uma partição (DROP)

Não

Não²

Não

Não suportado

Descartar um tablespace de partição (DISCARD)

Não

Não

Não

Não suportado

Importar um tablespace de partição (IMPORT)

Não

Não

Não

Não suportado

Truncar uma partição (TRUNCATE)

Sim

Não

Não

Não suportado

Mesclar partições (COALESCE)

Não

Sim

Não

Não suportado

Reorganizar uma partição (REORGANIZE)

Não

Não³

Não

Não suportado

Trocar uma partição (EXCHANGE)

Sim

Sim

Sim

Não suportado

Analisar uma partição (ANALYZE)

Sim

Sim

Não⁴

Não suportado

Verificar uma partição (CHECK)

Sim

Não

Não⁵

Não suportado

Otimizar uma partição (OPTIMIZE)

Sim⁶

Sim⁶

Não

Suportado⁶

Reconstruir uma partição (REBUILD)

Não

Não³

Não

Não suportado

Reparar uma partição (REPAIR)

Sim

Não³

Não

Não suportado

Converter uma tabela em tabela particionada

Não

Sim

Não

Não suportado

Converter uma tabela particionada em tabela padrão

Não

Sim

Não

Não suportado

¹ Para tabelas particionadas por RANGE e LIST, adicionar partições não exige reconstrução da tabela. Para tabelas particionadas por HASH e KEY, adicionar partições exige reconstrução da tabela.

² Não há suporte para exclusão de partições em tabelas particionadas por HASH e KEY.

³ Reorganizar, reconstruir e reparar uma partição reconstrói apenas as partições especificadas. Outras partições não são afetadas.

⁴ Analisar uma partição modifica apenas estatísticas, não metadados ou dados da tabela.

⁵ Verificar uma partição não modifica metadados nem dados.

⁶ Ao executar OPTIMIZE PARTITION em uma tabela InnoDB, toda a tabela particionada é reconstruída. Leituras e gravações são permitidas durante a reconstrução. Defina innodb_parallel_build_primary_index como ON para usar DDL paralelo e acelerar a reconstrução.

PolarDB for MySQL 5,7

Operação

DML simultâneo

Reconstrói tabela

Apenas metadados

DDL paralelo

Adicionar uma partição (ADD)

Não

Não¹

Sim

Não suportado

Excluir uma partição (DROP)

Não

Não¹

Não

Não suportado

Descartar um tablespace de partição (DISCARD)

Não

Não

Não

Não suportado

Importar um tablespace de partição (IMPORT)

Não

Não

Não

Não suportado

Truncar uma partição (TRUNCATE)

Sim

Não

Não

Não suportado

Mesclar partições (COALESCE)

Não

Sim

Não

Não suportado

Reorganizar uma partição (REORGANIZE)

Não

Não²

Não

Não suportado

Trocar partição

Sim

Não

Sim

Não suportado

Analisar uma partição (ANALYZE)

Sim

Não

Não³

Não suportado

Verificar uma partição (CHECK)

Sim

Não

Não⁴

Não suportado

Otimizar uma partição (OPTIMIZE)

Não

Sim

Não

Não suportado

Reconstruir uma partição (REBUILD)

Não

Não²

Não

Não suportado

Reparar uma partição (REPAIR)

Sim

Não²

Não

Não suportado

Converter uma tabela em tabela particionada

Não

Sim

Não

Não suportado

Converter uma tabela particionada em tabela padrão

Não

Sim

Não

Não suportado

¹ Para tabelas particionadas por RANGE e LIST, adicionar ou excluir partições não exige reconstrução da tabela. Para tabelas particionadas por HASH e KEY, adicionar partições exige reconstrução da tabela. Não há suporte para exclusão de partições em tabelas particionadas por HASH e KEY.

² Reorganizar, reconstruir e reparar uma partição reconstrói apenas as partições especificadas. Outras partições não são afetadas.

³ Analisar uma partição modifica apenas estatísticas, não metadados ou dados da tabela.

⁴ Verificar uma partição não modifica metadados nem dados.

PolarDB for MySQL 5,6

Operação

DML simultâneo

Reconstrói tabela

Apenas metadados

DDL paralelo

Adicionar uma partição (ADD)

Não

Não¹

Sim

Não suportado

Excluir uma partição (DROP)

Não

Não¹

Não

Não suportado

Descartar um tablespace de partição (DISCARD)

Não

Não

Não

Não suportado

Importar um tablespace de partição (IMPORT)

Não

Não

Não

Não suportado

Truncar uma partição (TRUNCATE)

Sim

Não

Não

Não suportado

Mesclar partições (COALESCE)

Não

Sim

Não

Não suportado

Reorganizar uma partição (REORGANIZE)

Não

Não²

Não

Não suportado

Trocar uma partição (EXCHANGE)

Sim

Não

Sim

Não suportado

Analisar uma partição (ANALYZE)

Sim

Não

Não³

Não suportado

Verificar uma partição (CHECK)

Sim

Não

Não⁴

Não suportado

Otimizar uma partição (OPTIMIZE)

Não

Sim

Não

Não suportado

Reconstruir uma partição (REBUILD)

Não

Não²

Não

Não suportado

Reparar uma partição (REPAIR)

Sim

Não²

Não

Não suportado

Converter uma tabela em tabela particionada

Não

Sim

Não

Não suportado

Converter uma tabela particionada em tabela padrão

Não

Sim

Não

Não suportado

¹ Para tabelas particionadas por RANGE e LIST, adicionar ou excluir partições não exige reconstrução da tabela. Para tabelas particionadas por HASH e KEY, adicionar partições exige reconstrução da tabela. Não há suporte para exclusão de partições em tabelas particionadas por HASH e KEY.

² Reorganizar, reconstruir e reparar uma partição reconstrói apenas as partições especificadas. Outras partições não são afetadas.

³ Analisar uma partição modifica apenas estatísticas, não metadados ou dados da tabela.

⁴ Verificar uma partição não modifica metadados nem dados.

Escolha um método de execução

Quando uma operação DDL utiliza o algoritmo INSTANT ou INPLACE, execute-a diretamente usando o kernel (Online DDL). Esta é a abordagem mais rápida e estável.

Quando uma operação DDL utiliza o algoritmo COPY, a tabela fica bloqueada durante toda a duração. Nesse caso, considere usar o DDL sem bloqueio no DMS ou uma ferramenta como gh-ost para permitir leituras e gravações durante a execução. Essas abordagens são mais lentas e podem falhar em tabelas grandes ou cargas de trabalho de alta concorrência devido ao excesso de dados incrementais.

Método

Leituras e gravações simultâneas

Velocidade

Binary logging necessário

Aceleração paralela

Kernel (Online DDL)

Sim

Rápida

Não

Suportada

DDL sem bloqueio no DMS, gh-ost

Sim

Lenta

Sim

Não suportada

Mesmo com ferramentas de terceiros, um bloqueio MDL-X é adquirido durante a troca de tabelas (quando metadados são modificados), bloqueando temporariamente a tabela. Para resolver isso, ative o recurso de DDL sem bloqueio ou o recurso de DDL preemptivo .
Importante

Operações DDL sem bloqueio podem aumentar o uso de IOPS e CPU. Execute-as fora dos horários de pico.

Tópicos relacionados

Se tiver dúvidas sobre operações DDL, entre em contato com o suporte técnico.