Todos os produtos
Search
Central de documentação

PolarDB:EXPLAIN DDL

Última atualização: Jun 28, 2026

O EXPLAIN DDL permite visualizar as características de execução de uma instrução ALTER TABLE antes da execução. Esse recurso informa qual algoritmo o mecanismo seleciona, se a operação exige reconstrução completa da tabela, se há suporte para DML simultâneo e se transações não confirmadas podem bloquear o processo. Use essas informações para avaliar o impacto nos negócios e definir o melhor momento e método para executar o DDL.

Versões suportadas

O EXPLAIN DDL está disponível nas seguintes versões:

  • PolarDB for MySQL 8.0.1, versão de revisão 8.0.1.1.49 ou posterior

  • PolarDB for MySQL 8.0.2, versão de revisão 8.0.2.2.27 ou posterior

Limitações

  • Suporte apenas para tabelas com o mecanismo de armazenamento InnoDB.

  • Nenhuma modificação de dados reais.

  • Execução permitida no nó primário e nos nós somente leitura. O campo Possible blocked MDLs exibe possíveis conflitos de bloqueio apenas no nó atual.

Ative o EXPLAIN DDL

O EXPLAIN DDL vem ativado por padrão. Use os parâmetros abaixo para controlar esse recurso. Para instruções de configuração, consulte Configurar parâmetros de cluster e de nó.

Parâmetro

Nível

Descrição

Padrão

loose_polar_enable_explain_ddl

Global

Ativa ou desativa o EXPLAIN DDL. Valores válidos: ON, OFF.

ON

loose_polar_max_collect_thd_num_in_explain_ddl

Global

Número máximo de threads com potencial de bloqueio MDL a coletar. Valores válidos: 1–512.

16

Sintaxe

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

Campos de saída

Quatro campos determinam diretamente o impacto nos negócios: Algorithm, Metadata Only, Rebuilt Table e Concurrent DML. Use o campo Possible blocked MDLs para detectar conflitos de bloqueio ativos antes da execução.

Campo

Descrição

Valores

Error No

Código de erro. O valor 0 indica execução bem-sucedida da instrução.

0 (sucesso) ou um código de erro

Algorithm

Algoritmo usado pelo mecanismo. INSTANT é o mais eficiente; COPY é o menos eficiente e bloqueia gravações.

INSTANT, INPLACE, COPY, Unknown

Metadata Only

Indica se a operação modifica apenas metadados, sem alterar os dados da tabela. Operações somente de metadados são concluídas em segundos, independentemente do tamanho da tabela.

Yes, No, Unknown

Rebuilt Table

Indica se a operação exige reconstrução completa da tabela. Reconstruir tabelas grandes consome bastante tempo.

Yes, No, Unknown

Parallel Support

Indica se a operação suporta DDL paralelo para aceleração.

Yes, Yes, But Not Enabled, Not Needed, No, Unknown

Parallel Degree

Quantidade de threads usadas pela operação DDL. O valor -1 significa desconhecido.

-1 (desconhecido), 1128

Concurrent DML

Indica se operações de leitura e gravação são permitidas durante a execução do DDL.

Yes, No, Unknown

Possible blocked MDLs

IDs de processo das conexões com transações não confirmadas que podem bloquear o DDL.

IDs de processo separados por vírgula ou vazio

Error Msg

Mensagem de erro correspondente ao campo Error No.

Uma string

Suggest Info

Sugestões de otimização, como ativar DDL paralelo ou resolver conflitos de bloqueio.

Uma string

Statement

Instrução DDL analisada.

Uma instrução DDL

Classificação de eficiência dos algoritmos

Os três algoritmos formam uma hierarquia de eficiência. O EXPLAIN DDL relata o algoritmo realmente selecionado pelo mecanismo, correspondente ao mais eficiente suportado pela operação:

Algoritmo

Reconstrução de tabela

DML simultâneo

Eficiência

INSTANT

Não

Sim

Mais alta — conclusão em segundos

INPLACE

Depende da operação

Sim

Média — pode levar minutos em tabelas grandes

COPY

Sim

Não

Mais baixa — bloqueia gravações; evite em horários de pico

Referência de operações

Use esta tabela para estimar o impacto nos negócios antes de executar o EXPLAIN DDL em uma operação específica. A tabela reflete o comportamento típico; use o EXPLAIN DDL para confirmar o resultado real em seu ambiente.

Operação

Algoritmo

Somente metadados

Reconstrução de tabela

DML simultâneo

Impacto típico

Adicionar uma coluna

INSTANT

Sim

Não

Sim

Conclusão em segundos; impacto mínimo

Renomear uma tabela

INPLACE

Sim

Não

Sim

Conclusão rápida; impacto mínimo

Adicionar um índice secundário

INPLACE

Não

Não

Sim

Tempo variável conforme o tamanho da tabela; baixo impacto

Reconstruir uma tabela

INPLACE

Não

Sim

Sim

Consumo significativo de recursos; agende fora do horário de pico

Modifique o tipo de uma coluna

COPY

Não

Sim

Não

Bloqueio de gravações; agende fora do horário de pico

Exemplos

Verificar características de execução

Os exemplos a seguir demonstram como usar o EXPLAIN DDL para avaliar se uma operação DDL afeta a disponibilidade do negócio.

Todos os exemplos usam a mesma tabela de teste:

SHOW CREATE TABLE t1\G
*************************** 1. row ***************************
       Table: t1
Create Table: CREATE TABLE `t1` (
  `a` int(11) DEFAULT NULL,
  `b` char(1) DEFAULT NULL,
  `c` char(1) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

Adicionar uma coluna

EXPLAIN ALTER TABLE t1 ADD COLUMN d INT;
*************************** 1. row ***************************
             Error No: 0
            Algorithm: INSTANT
        Metadata Only: Yes
        Rebuilt table: No
     Parallel Support: Not Need
      Parallel Degree: 1
       Concurrent DML: Yes
Possible blocked MDLs:
            Error Msg:
         Suggest Info:
            Statement: EXPLAIN ALTER TABLE t1 ADD COLUMN d int
1 row in set (0.00 sec)

O algoritmo INSTANT modifica apenas metadados, sem reconstruir a tabela, e permite DML simultâneo. Essa operação é concluída em segundos com impacto mínimo nos negócios.

Renomear uma tabela

EXPLAIN ALTER TABLE t1 rename t1_rn;
*************************** 1. row ***************************
             Error No: 0
            Algorithm: INPLACE
        Metadata Only: Yes
        Rebuilt table: No
     Parallel Support: Not Need
      Parallel Degree: 1
       Concurrent DML: Yes
Possible blocked MDLs:
            Error Msg:
         Suggest Info:
            Statement: EXPLAIN ALTER TABLE t1 rename t1_rn
1 row in set (0.01 sec)

O algoritmo INPLACE modifica apenas metadados, sem reconstruir a tabela, e permite DML simultâneo. Essa operação tem impacto mínimo nos negócios.

Modifique o tipo de uma coluna

EXPLAIN ALTER TABLE t1 modify COLUMN a char(1);
*************************** 1. row ***************************
             Error No: 0
            Algorithm: COPY
        Metadata Only: No
        Rebuilt table: Yes
     Parallel Support: No
      Parallel Degree: 1
       Concurrent DML: No
Possible blocked MDLs:
            Error Msg:
         Suggest Info:
            Statement: EXPLAIN ALTER TABLE t1 modify COLUMN a char(1)
1 row in set (0.01 sec)

O algoritmo COPY exige reconstrução completa da tabela e bloqueia DML simultâneo. Essa operação causa impacto significativo nos negócios — agende-a fora do horário de pico.

Reconstruir uma tabela

EXPLAIN ALTER TABLE t1 engine= innodb;
*************************** 1. row ***************************
             Error No: 0
            Algorithm: INPLACE
        Metadata Only: No
        Rebuilt table: Yes
     Parallel Support: Yes But Not Enable
      Parallel Degree: 1
       Concurrent DML: Yes
Possible blocked MDLs:
            Error Msg:
         Suggest Info: 1. This DDL operation could use Parallel DDL to speed up.
            Statement: EXPLAIN ALTER TABLE t1 engine= innodb

O algoritmo INPLACE exige reconstrução completa da tabela, mas permite DML simultâneo. Embora a operação não bloqueie leituras ou gravações, reconstruir uma tabela grande consome recursos significativos — agende essa tarefa fora do horário de pico.

O campo Suggest Info indica que o DDL paralelo pode acelerar esta operação. Consulte Verificar suporte a DDL paralelo para mais detalhes.

Verificar suporte a DDL paralelo

O PolarDB for MySQL suporta DDL paralelo para acelerar operações DDL. Use os campos Parallel Support e Parallel Degree para determinar se uma operação pode se beneficiar do DDL paralelo.

  • Se Parallel Support for Yes, But Not Enabled, a operação suporta DDL paralelo, mas o recurso não está ativado no cluster. O campo Suggest Info exibe: This DDL operation could use Parallel DDL to speed up. Para ativar o DDL paralelo, consulte DDL paralelo.

  • Se Parallel Support for Yes, o recurso está ativado e em uso. O EXPLAIN DDL também recomenda um grau ideal de paralelismo com base na carga de trabalho atual do cluster. O campo Suggest Info exibe: This DDL operation can be accelerated by increasing the value of 'innodb_polar_parallel_ddl_threads'. The recommended value is 8. Ajuste o parâmetro innodb_polar_parallel_ddl_threads conforme recomendado para melhorar o desempenho.

Exemplo: DDL paralelo desativado

Verifique se o DDL paralelo está ativado:

MySQL [test]> SHOW variables LIKE "%parallel_ddl_threads%";
+----------------------------------------------------+-------+
| Variable_name                                      | Value |
+----------------------------------------------------+-------+
| innodb_polar_innovate_default_parallel_ddl_threads | 1     |
| innodb_polar_parallel_ddl_threads                  | 1     |
+----------------------------------------------------+-------+
2 rows in set (0.03 sec)

O DDL paralelo não está ativado. Execute o EXPLAIN na operação de adição de índice secundário:

EXPLAIN ALTER TABLE t1 ADD index k_a(a);
*************************** 1. row ***************************
             Error No: 0
            Algorithm: INPLACE
        Metadata Only: No
        Rebuilt table: No
     Parallel Support: Yes But Not Enable
      Parallel Degree: 1
       Concurrent DML: Yes
Possible blocked MDLs:
            Error Msg:
         Suggest Info: 1. This DDL operation could use Parallel DDL to speed up.
            Statement: EXPLAIN ALTER TABLE t1 ADD index k_a(a)
1 row in set (0.01 sec)

O resultado Parallel Support: Yes But Not Enabled indica que a operação pode usar DDL paralelo, mas o recurso não está ativo. Ative o DDL paralelo para acelerá-la.

Exemplo: DDL paralelo ativado

Defina o grau de paralelismo como 2:

MySQL [test]> SET innodb_polar_parallel_ddl_threads = 2;
Query OK, 0 rows affected (0.00 sec)

Execute o EXPLAIN na mesma operação de adição de índice secundário:

EXPLAIN ALTER TABLE t1 ADD index k_a(a);
*************************** 1. row ***************************
             Error No: 0
            Algorithm: INPLACE
        Metadata Only: No
        Rebuilt table: No
     Parallel Support: Yes
      Parallel Degree: 2
       Concurrent DML: Yes
Possible blocked MDLs:
            Error Msg:
         Suggest Info: 1. This DDL operation can be accelerated by increasing the value of 'innodb_polar_parallel_ddl_threads'. The recommended value is 8.
            Statement: explain ALTER TABLE t1 ADD index k_a(a)
1 row in set (0.01 sec)

Os valores Parallel Support: Yes e Parallel Degree: 2 confirmam que a operação usa dois threads paralelos. Como a carga de trabalho atual do cluster é baixa, o campo Suggest Info recomenda aumentar o grau de paralelismo para 8 visando melhor desempenho.

Detectar bloqueios de MDL

Transações não confirmadas que mantêm um Metadata Lock (MDL) na mesma tabela podem bloquear operações DDL. Em casos extremos, bloqueios de MDL não detectados causam acúmulo de conexões ativas e instabilidade no cluster. Use o campo Possible blocked MDLs para identificar conexões bloqueadoras antes de executar o DDL.

Quando existem bloqueios, o campo Possible blocked MDLs lista os IDs de processo das conexões com transações não confirmadas. Encerre-as com KILL ou KILL QUERY para desbloquear o DDL.

Exemplo: detecção de bloqueio de MDL

Na conexão 1, inicie uma transação em t1 sem confirmá-la:

MySQL [test]> begin;
Query OK, 0 rows affected (0.00 sec)

MySQL [test]> select * from t1;
Empty set (0.00 sec)

Na conexão 2, execute o EXPLAIN DDL em t1:

EXPLAIN ALTER TABLE t1 engine= innodb;
*************************** 1. row ***************************
             Error No: 0
            Algorithm: INPLACE
        Metadata Only: No
        Rebuilt table: Yes
     Parallel Support: Yes But Not Enable
      Parallel Degree: 1
       Concurrent DML: Yes
Possible blocked MDLs: 18
            Error Msg:
         Suggest Info: 1. This DDL operation may be blocked by the threads listed under 'Possible blocked MDLs'.
2. This DDL operation could use Parallel DDL to speed up.
            Statement: EXPLAIN ALTER TABLE t1 engine= innodb

O resultado Possible blocked MDLs: 18 identifica que a conexão 18 possui uma transação não confirmada que bloqueará este DDL. Execute KILL 18 ou KILL QUERY 18 para encerrá-la antes de prosseguir.

Próximos passos