DDL paralela
A DDL tradicional é projetada com base em um único núcleo e discos tradicionais. Leva muito tempo para executar operações DDL em tabelas grandes e a latência é muito alta. Por exemplo, ao criar índices secundários, as operações DDL com alta latência bloqueiam consultas DML subsequentes que dependem de novos índices.
GaussDB(for MySQL) suporta DDL paralela. Quando os recursos de hardware do banco de dados estão ociosos, você pode usar a DDL paralela para acelerar a execução da DDL, impedindo que as operações DML subsequentes sejam bloqueadas e encurtando a janela de operação da DDL.
Restrições
- Esta função é suportada quando a versão do kernel é 2.0.45.230900 ou posterior.
- Esta função é adequada apenas para índices secundários BTREE.
- Esta função não é adequada para índices de chave primária, índices espaciais e índices de texto completo. Se uma instrução SQL para criar índices simultaneamente contiver um índice de chave primária, índice espacial ou índice de texto completo, o cliente receberá um alarme indicando que a operação não oferece suporte à criação simultânea de índices. A instrução é executada no modo de criação de índice de thread único. Suponha que vários threads são especificados quando um índice de chave primária é modificado. Um alarme também será relatado e o índice é criado por meio de um único thread.
Ativação de DDL paralela
Parâmetro |
Nível |
Descrição |
innodb_rds_parallel_index_creation_threads |
Global, Session |
|
Exemplo
- Prepare uma tabela sysbench com 100 milhões de registros de dados.
Figura 1 Exibição de informações da tabela
- Crie um índice no campo k da tabela.
Crie um índice para o campo k na tabela. Se um único thread é usado para criar o índice por padrão, deve demorar 146,82 segundos.Figura 2 Criação de um índice usando um único thread
- Defina innodb_rds_parallel_index_creation_threads = 4 para usar quatro threads para criar o índice.
Deve levar 38,72 segundos para criar o índice, 3,79 vezes mais rápido do que com um único thread.Figura 3 Criação de um índice usando vários threads
- Suponha que um índice de chave primária precisa ser modificado. Mesmo que vários threads sejam especificados, um aviso será recebido e o índice será criado usando apenas um único thread.
Figura 4 Modificação de um índice de chave primária