Todos os produtos
Search
Central de documentação

AnalyticDB:BUILD

Última atualização: Sep 17, 2026

Jobs BUILD reconstroem partições com novos dados gravados para melhorar o desempenho de leitura. Durante a reconstrução, o sistema cria índices, remove dados redundantes e executa instruções DDL assincronamente.

Visão geral

Durante um job BUILD, o sistema mescla dados gravados em tempo real com as partições históricas associadas, cria índices e executa instruções DDL assincronamente. Após executar instruções INSERT, UPDATE ou DELETE nos dados de uma partição, execute um job BUILD para reconstruí-la. Jobs BUILD não reconstroem partições sem alterações nos dados.

O agendamento de jobs BUILD ocorre no nível da tabela. Jobs de tabelas diferentes podem ser executados em paralelo. Ao iniciar um job BUILD em uma tabela, o sistema o divide em tarefas no nível de shard. Cada uma das três réplicas de um shard executa uma tarefa. O job BUILD é concluído quando todas as tarefas terminam.

Ao executar instruções DELETE ou REPLACE, o sistema marca os dados para exclusão e os remove assincronamente por meio de jobs BUILD em segundo plano. Se você executar muitos comandos DELETE ou REPLACE e os jobs BUILD ainda não tiverem sido concluídos, o número de linhas da tabela exibido no Storage Overview será maior que o resultado retornado por SELECT COUNT(*). Isso ocorre porque a contagem no Storage Overview vem do campo row_count em information_schema.kepler_partitions, que conta linhas físicas e inclui aquelas marcadas para exclusão, mas ainda não removidas. Já o comando SELECT COUNT(*) retorna o número de linhas lógicas válidas e exclui as marcadas para exclusão. Para alinhar esses dois valores, execute manualmente BUILD TABLE e limpe os dados pendentes de exclusão.

Observações de uso

  • Durante a execução de um job BUILD, não execute a instrução INSERT OVERWRITE SELECT para inserir dados nas tabelas até que o job seja concluído. Caso precise inserir dados nesse período, utilize a instrução INSERT INTO.

  • Após enviar um job BUILD, não é possível cancelá-lo.

  • Por padrão, o número de jobs BUILD simultâneos corresponde ao resultado arredondado para cima de Number of cores/3 e não pode ser modificado.

    Por exemplo, se as especificações do nó de um cluster AnalyticDB for MySQL forem 32 núcleos e 128 GB de memória, o número de jobs BUILD simultâneos será 11 (resultado arredondado para cima de 32/3).

  • Jobs BUILD consomem recursos de CPU, memória e I/O. Consequentemente, métricas relacionadas a disco, como utilização de CPU e uso de I/O de disco, podem aumentar. Após a conclusão dos jobs BUILD, as métricas retornam aos valores normais. Recomendamos executar jobs BUILD fora dos horários de pico.

Acionamento automático de jobs BUILD

Um job BUILD é acionado automaticamente quando uma das seguintes condições é atendida:

  • O tempo decorrido desde o último job BUILD atinge o intervalo mínimo entre jobs e pelo menos 50.000 linhas de dados foram adicionadas a um shard de uma tabela.

    • Intervalo de tempo para Enterprise Edition, Basic Edition ou Data Lakehouse Edition: 1,5 horas.

    • Intervalo de tempo para Data Warehouse Edition em modo elástico: 1,5 horas.

    • Intervalo de tempo para Data Warehouse Edition em modo reservado: 0,5 horas.

  • Vinte e quatro horas se passaram desde o último job BUILD e pelo menos uma linha de dados foi modificada.

Acionar manualmente um job BUILD

Executar uma instrução BUILD nas partições com alterações de dados

  • Tabela XUANWU

    BUILD TABLE <table_name>;

    Este método aciona um job BUILD apenas nas partições cujos dados foram modificados.

    • Tabela XUANWU_V2

      BUILD TABLE <table_name> [BUILD_OPTION];

      BUILD_OPTION: suporta apenas o valor ttl, que é um parâmetro opcional. Se você deixar esse parâmetro vazio, este método acionará um job BUILD somente nas partições com dados modificados. Caso especifique esse parâmetro, o método excluirá imediatamente as partições expiradas após a conclusão do job BUILD.

    Nota

    Para obter informações sobre como determinar e especificar um mecanismo de tabela, consulte a seção "Specify a table engine" do tópico XUANWU_V2 engine.

Executar uma instrução BUILD em partições específicas

BUILD TABLE test force partitions='partition1,partition2';
Importante

A execução de uma instrução BUILD em partições específicas é suportada apenas em clusters AnalyticDB for MySQL V3.1.6.0 ou posterior. Para saber como visualizar a versão secundária de um cluster AnalyticDB for MySQL, consulte 如何查看实例版本信息. Para atualizar a versão secundária de um cluster, entre em contato com o suporte técnico.

Se uma tabela contiver grandes volumes de dados, a instrução BUILD TABLE <table_name> force = true; poderá levar muito tempo para ser executada. O AnalyticDB for MySQL permite especificar as partitions nas quais você deseja executar um job BUILD. Isso ajuda a reduzir o uso de recursos e melhora o desempenho dos jobs BUILD.

Executar uma instrução BUILD em uma tabela inteira

BUILD TABLE <table_name> force = true;

Este método aciona um job BUILD e recria um índice para todas as partições de uma tabela. Por padrão, esse recurso está desativado.

Importante

Este método recria um índice para todos os dados existentes de uma tabela, o que consome um longo período de tempo. Recomendamos executar uma instrução BUILD em partições específicas. Antes de executar uma instrução BUILD em uma tabela inteira, avalie os efeitos e riscos. Para ativar esse recurso, envie um ticket.

Configurar agendamento automático para jobs BUILD

  • Método de configuração

    SET ADB_CONFIG RC_CSTORE_BUILD_SCHEDULE_PERIOD=`<start>,<end>`;

    Os parâmetros start e end definem um intervalo de tempo para agendar jobs BUILD. Defina os parâmetros na faixa de 0 a 24 e coloque o intervalo de tempo entre crases ( ). É possível configurar vários intervalos de tempo, separando-os por ponto e vírgula (;).

    Por exemplo, defina o parâmetro start como 0 e o parâmetro end como 6 para agendar jobs BUILD no período das 0:00 às 6:59.

    Importante

    Os intervalos de tempo especificados servem para agendar jobs, não para executá-los. Portanto, após o agendamento, o sistema pode não concluir a execução dos jobs quando os intervalos de tempo terminarem.

  • Exemplo

    Configure jobs BUILD para serem agendados nos seguintes intervalos de tempo: 00:00 às 06:59 e 18:00 às 22:59.

    SET ADB_CONFIG RC_CSTORE_BUILD_SCHEDULE_PERIOD=`0,6;18,22`;

    Após executar a instrução acima, o sistema agendará jobs BUILD nos intervalos de 00:00 às 06:59 e de 18:00 às 22:59.

Configurar prioridades de agendamento para jobs BUILD

A ordem de agendamento dos jobs BUILD baseia-se na quantidade de dados adicionados aos shards individuais das tabelas. Quanto maior a quantidade de dados adicionada a um shard, mais cedo o job será agendado e executado. Também é possível usar uma dica (hint) ou executar a instrução SET ADB_CONFIG para configurar as prioridades de agendamento dos jobs BUILD para as tabelas.

Importante
  • A configuração de prioridades de agendamento para jobs BUILD está disponível apenas para clusters AnalyticDB for MySQL V3.1.5.0 ou posterior.

    Para view and update the minor version, acesse a seção Configuration Information na página Cluster Information no console do AnalyticDB for MySQL.

  • Uma dica (hint) suporta apenas uma tabela. A prioridade configurada tem efeito somente no job BUILD atual.

  • A instrução SET ADB_CONFIG suporta uma ou mais tabelas. As prioridades configuradas permanecem válidas até que novas prioridades de agendamento sejam definidas para as tabelas.

  • Caso utilize uma dica e a instrução SET ADB_CONFIG para definir prioridades diferentes para a mesma tabela, a prioridade baseada na dica terá precedência no job atual.

O parâmetro task_priority define a prioridade de agendamento dos jobs BUILD. O valor deve ser um número inteiro, sendo o padrão 0. Um valor maior indica uma prioridade de agendamento mais alta. Após configurar as prioridades, os nós de frontend agendarão os jobs BUILD com base nelas. Se você definir o parâmetro task_priority com um valor menor que 0 para uma tabela, o agendamento automático de jobs BUILD será desativado para ela e os nós de frontend não agendarão jobs para essa tabela.

Métodos de configuração:

  • Usar uma dica (hint)

    /*build_task_priority = <task_priority> */ BUILD TABLE <db_name>.<table_name>;

    Por exemplo, defina a prioridade de agendamento dos jobs BUILD como 30 para a tabela test no banco de dados adb_demo.

    /*build_task_priority = 30 */ Build TABLE adb_demo.test;
  • Usar a instrução SET ADB_CONFIG

    • Configure prioridades de agendamento de jobs BUILD para várias tabelas em bancos de dados diferentes.

      SET ADB_CONFIG RC_BUILD_TASK_PRIORITY_LIST = `<db1_name>.<table1_name>.<task_priority>;<db2_name>.<table2_name>.<task_priority>`;
      Nota

      Separe várias tabelas com ponto e vírgula (;).

      Por exemplo, defina a prioridade de agendamento dos jobs BUILD como 30 para a tabela test1 no banco de dados adb_demo1 e como 10 para a tabela test2 no banco de dados adb_demo2.

      SET ADB_CONFIG RC_BUILD_TASK_PRIORITY_LIST = `adb_demo1.test1.30;adb_demo2.test2.10`;
    • Configure a mesma prioridade de agendamento de jobs BUILD para todas as tabelas em um banco de dados.

      SET ADB_CONFIG RC_BUILD_TASK_PRIORITY_LIST = `<db1_name>.*.<task_priority>`;

      Por exemplo, defina a prioridade de agendamento dos jobs BUILD como 30 para todas as tabelas no banco de dados adb_demo1.

      SET ADB_CONFIG RC_BUILD_TASK_PRIORITY_LIST = `adb_demo1.*.30`;
    • Configure prioridades de agendamento diferentes entre uma tabela específica e as demais tabelas no mesmo banco de dados.

      SET ADB_CONFIG RC_BUILD_TASK_PRIORITY_LIST = `<db1_name>.*.<task_priority>;<db1_name>.<table_name>.<task_priority>`;

      Por exemplo, defina a prioridade de agendamento dos jobs BUILD como 30 para a tabela test1 no banco de dados adb_demo1 e como 10 para todas as outras tabelas desse banco de dados.

      SET ADB_CONFIG RC_BUILD_TASK_PRIORITY_LIST = `adb_demo1.*.10;adb_demo1.test1.30`;

Execute a instrução SHOW ADB_CONFIG para consultar a prioridade de agendamento atual dos jobs BUILD.

Consultar o status de um job BUILD

Após um job BUILD ser acionado automática ou manualmente, execute a seguinte instrução SQL para consultar o status do job nos últimos três dias:

SELECT table_name, schema_name, status FROM INFORMATION_SCHEMA.KEPLER_META_BUILD_TASK ORDER BY create_time DESC LIMIT 10;

A tabela a seguir descreve o status dos jobs BUILD com base nos valores do parâmetro status.

Valor de status

Descrição

INIT

O job está sendo inicializado.

RUNNING

O job está em execução.

FINISH

O job foi concluído.

Perguntas frequentes

Por que o agendamento automático de jobs BUILD não entra em vigor?

Causa: Os parâmetros relacionados ao tempo não foram colocados entre crases ( ), resultando em falha na análise sintática.

Solução: Ao executar a instrução SET ADB_CONFIG RC_CSTORE_BUILD_SCHEDULE_PERIOD para configurar o agendamento automático, coloque os parâmetros start e end entre crases ( ). Por exemplo, SET ADB_CONFIG RC_CSTORE_BUILD_SCHEDULE_PERIOD= especifica que o sistema deve agendar jobs BUILD no intervalo de 0:00 a 6:59.