Todos los productos
Search
Centro de documentos

:BUILD

Última actualización: Sep 24, 2026

Los trabajos BUILD se utilizan para reconstruir las particiones que tienen datos recién escritos. Esto ayuda a mejorar el rendimiento de lectura. Durante el proceso de reconstrucción, el sistema crea índices, elimina los datos redundantes y ejecuta instrucciones DDL de forma asíncrona.

Descripción general

Durante un trabajo BUILD, el sistema combina los datos escritos en tiempo real con las particiones históricas que los contienen. Además, crea índices y ejecuta instrucciones DDL de forma asíncrona. Después de ejecutar instrucciones INSERT, UPDATE o DELETE sobre los datos de una partición, es posible ejecutar un trabajo BUILD para reconstruirla. Los trabajos BUILD no reconstruyen las particiones sin cambios en los datos.

La programación de los trabajos BUILD se realiza a nivel de tabla. Los trabajos de distintas tablas pueden ejecutarse en paralelo. Una vez que inicia un trabajo BUILD en una tabla, este se divide en tareas a nivel de shard. Cada una de las tres réplicas de un shard ejecuta una tarea. El trabajo BUILD finaliza cuando todas las tareas terminan.

Al ejecutar instrucciones DELETE o REPLACE, los datos se marcan para su eliminación y los trabajos BUILD en segundo plano los borran de forma asíncrona. Si se ejecutan muchas instrucciones DELETE o REPLACE y los trabajos BUILD no han terminado, la cantidad de filas de la tabla mostrada en Storage Overview será mayor que el resultado devuelto por SELECT COUNT(*). Esto ocurre porque el valor de Storage Overview proviene del campo row_count en information_schema.kepler_partitions, el cual cuenta las filas físicas e incluye aquellas marcadas para eliminación pero aún no borradas. En cambio, SELECT COUNT(*) devuelve la cantidad de filas lógicas válidas y excluye las filas marcadas para eliminación. Para borrar manualmente los datos marcados y lograr que ambas cifras coincidan, ejecute BUILD TABLE.

Notas de uso

  • Mientras se ejecuta un trabajo BUILD, no es posible usar la instrucción INSERT OVERWRITE SELECT para insertar datos en las tablas hasta que dicho trabajo termine. Si necesita insertar datos, utilice la instrucción INSERT INTO.

  • Una vez enviado un trabajo BUILD, no se puede cancelar.

  • De forma predeterminada, la cantidad de trabajos BUILD simultáneos corresponde al resultado redondeado hacia arriba de Number of cores/3. Este valor no se puede modificar.

    Por ejemplo, si las especificaciones de nodo de un clúster de AnalyticDB for MySQL son 32 núcleos y 128 GB de memoria, la cantidad de trabajos BUILD simultáneos será 11 (el resultado de redondear hacia arriba 32/3).

  • Los trabajos BUILD consumen recursos de CPU, memoria y E/S. Por esta razón, métricas como la utilización de CPU y el uso de E/S de disco podrían aumentar. Cuando los trabajos BUILD finalizan, estas métricas vuelven a sus valores normales. Se recomienda ejecutar los trabajos BUILD durante las horas de menor actividad.

Activación automática de trabajos BUILD

Un trabajo BUILD se activa automáticamente cuando se cumple alguna de las siguientes condiciones:

  • El tiempo transcurrido desde el último trabajo BUILD alcanza el intervalo mínimo entre trabajos y se agregaron como mínimo 50,000 filas de datos a un shard de una tabla.

    • Intervalo de tiempo para Enterprise Edition, Basic Edition o Data Lakehouse Edition: 1.5 horas.

    • Intervalo de tiempo para Data Warehouse Edition en modo elástico: 1.5 horas.

    • Intervalo de tiempo para Data Warehouse Edition en modo reservado: 0.5 horas.

  • Transcurrieron veinticuatro horas desde el último trabajo BUILD y se modificó como mínimo una fila de datos.

  • Cuando la cantidad de datos nuevos en un shard de una tabla llega a 1 millón de filas, se omite el intervalo de tiempo entre trabajos BUILD. En ese caso, se ejecuta inmediatamente un trabajo BUILD en la siguiente programación.

    Nota

    Esta regla solo es compatible con clústeres cuyas versiones de kernel sean v3.1.8.7, v3.1.9.4, v3.1.10.1 o v3.2.0 y posteriores. Para conocer cómo consultar la versión de kernel de un clúster, consulte 如何查看实例版本信息. El umbral para activar esta regla se ajusta mediante el parámetro de control RC_BUILD_IGNORE_INTERVAL_TIME_ROW_COUNT. El valor predeterminado es 1000000 (1 millón de filas). El ajuste surte efecto de inmediato, sin necesidad de reiniciar.

  • Si la tabla tiene tareas DDL asíncronas en estado Waiting, se ejecuta inmediatamente un trabajo BUILD en la siguiente programación.

    Nota

    Esta regla solo es compatible con clústeres cuya versión de kernel sea v3.2.0 o posterior. Las tareas DDL asíncronas (como cambiar tipos de columnas o modificar directivas de almacenamiento) surten efecto únicamente después de finalizar un trabajo BUILD. Esta regla evita que dichas tareas permanezcan mucho tiempo en estado Waiting por esperar el intervalo entre trabajos BUILD. Se controla mediante el parámetro RC_AUTO_BUILD_WHEN_HAS_DATA_MODIFY_TASKS y está habilitada de forma predeterminada. Para deshabilitarla, ejecute SET ADB_CONFIG RC_AUTO_BUILD_WHEN_HAS_DATA_MODIFY_TASKS = false;.

Activar manualmente un trabajo BUILD

Ejecutar una instrucción BUILD en las particiones con cambios en los datos

  • Tabla XUANWU

    BUILD TABLE <table_name>;

    Este método activa un trabajo BUILD únicamente en las particiones cuyos datos se modificaron.

    • Tabla XUANWU_V2

      BUILD TABLE <table_name> [BUILD_OPTION];

      BUILD_OPTION: admite únicamente el valor ttl, que es un parámetro opcional. Si deja este parámetro vacío, el método activa un trabajo BUILD solo en las particiones con datos modificados. Si lo especifica, el método elimina de inmediato las particiones caducadas una vez que termina el trabajo BUILD.

    Nota

    Para saber cómo determinar y especificar un motor de tabla, consulte la sección "Specify a table engine" del tema XUANWU_V2 engine.

Ejecutar una instrucción BUILD en particiones específicas

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

La ejecución de una instrucción BUILD en particiones específicas solo es compatible con clústeres de AnalyticDB for MySQL V3.1.6.0 o posteriores. Para conocer cómo consultar la versión secundaria de un clúster de AnalyticDB for MySQL, consulte 如何查看实例版本信息. Para actualizar la versión secundaria de un clúster, póngase en contacto con el soporte técnico.

Si una tabla contiene grandes volúmenes de datos, la instrucción BUILD TABLE <table_name> force = true; podría tardar bastante en ejecutarse. AnalyticDB for MySQL permite especificar las partitions donde desea ejecutar un trabajo BUILD. Esto reduce el consumo de recursos y mejora el rendimiento de dichos trabajos.

Ejecutar una instrucción BUILD en una tabla completa

BUILD TABLE <table_name> force = true;

Este método activa un trabajo BUILD en todas las particiones de una tabla y vuelve a crear el índice correspondiente. De forma predeterminada, esta función está deshabilitada.

Importante

Este método vuelve a crear el índice de todos los datos existentes en una tabla, lo cual consume mucho tiempo. Se recomienda ejecutar la instrucción BUILD en particiones específicas. Antes de aplicarlo a una tabla completa, evalúe los efectos y riesgos. Para habilitar esta función, envíe un ticket.

Configurar la programación automática de trabajos BUILD

  • Método de configuración

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

    Los parámetros start y end definen el rango de tiempo en el que desea programar los trabajos BUILD. Establezca estos parámetros con valores de 0 a 24 y encierre el rango entre comillas invertidas ( ). Es posible configurar varios rangos de tiempo separados por punto y coma (;).

    Por ejemplo, si establece el parámetro start en 0 y el parámetro end en 6, los trabajos BUILD se programarán entre las 0:00 y las 6:59.

    Importante

    Los rangos de tiempo especificados sirven para programar los trabajos, no para ejecutarlos. Por lo tanto, una vez programados, es posible que el sistema no termine de ejecutarlos antes de que concluya el rango indicado.

  • Ejemplo

    Configure los trabajos BUILD para que se programen en los siguientes rangos de tiempo: de 00:00 a 06:59 y de 18:00 a 22:59.

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

    Después de ejecutar la instrucción anterior, el sistema programa los trabajos BUILD de 00:00 a 06:59 y de 18:00 a 22:59.

Configurar prioridades de programación para trabajos BUILD

El orden en el que se programan los trabajos BUILD depende de la cantidad de datos agregados a cada shard de las tablas. Entre más datos se agreguen a un shard, antes se programará y ejecutará el trabajo. También puede usar un hint o ejecutar la instrucción SET ADB_CONFIG para configurar las prioridades de programación de los trabajos BUILD de las tablas.

Importante
  • La configuración de prioridades de programación para trabajos BUILD solo es compatible con clústeres de AnalyticDB for MySQL V3.1.5.0 o posteriores.

    Para view and update the minor version, vaya a la sección Configuration Information en la página Cluster Information de la consola de AnalyticDB for MySQL.

  • Un hint admite únicamente una tabla. La prioridad configurada surte efecto solo en el trabajo BUILD actual.

  • La instrucción SET ADB_CONFIG admite una o más tablas. Las prioridades configuradas permanecen vigentes hasta que establezca nuevas prioridades de programación para dichas tablas.

  • Si utiliza un hint y la instrucción SET ADB_CONFIG para definir prioridades distintas en una misma tabla, la prioridad del hint tendrá precedencia en el trabajo actual.

El parámetro task_priority define la prioridad de programación de los trabajos BUILD. Su valor debe ser un número entero y, de forma predeterminada, es 0. Un valor mayor indica una prioridad más alta. Una vez configuradas las prioridades, los nodos de frontend programan los trabajos BUILD según estos valores. Si establece el parámetro task_priority en un valor menor que 0 para una tabla, se deshabilita la programación automática de trabajos BUILD para dicha tabla y los nodos de frontend no los programarán.

Métodos de configuración:

  • Usar un hint

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

    Por ejemplo, establezca la prioridad de programación de los trabajos BUILD en 30 para la tabla test de la base de datos adb_demo.

    /*build_task_priority = 30 */ Build TABLE adb_demo.test;
  • Usar la instrucción SET ADB_CONFIG

    • Configure las prioridades de programación de trabajos BUILD para varias tablas en distintas bases de datos.

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

      Separe varias tablas con punto y coma (;).

      Por ejemplo, establezca la prioridad de programación en 30 para la tabla test1 de la base de datos adb_demo1 y en 10 para la tabla test2 de la base de datos adb_demo2.

      SET ADB_CONFIG RC_BUILD_TASK_PRIORITY_LIST = `adb_demo1.test1.30;adb_demo2.test2.10`;
    • Configure la misma prioridad de programación de trabajos BUILD para todas las tablas de una base de datos.

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

      Por ejemplo, establezca la prioridad de programación de trabajos BUILD en 30 para todas las tablas de la base de datos adb_demo1.

      SET ADB_CONFIG RC_BUILD_TASK_PRIORITY_LIST = `adb_demo1.*.30`;
    • Configure prioridades de programación distintas entre una tabla específica y el resto de las tablas de la misma base de datos.

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

      Por ejemplo, establezca la prioridad de programación en 30 para la tabla test1 de la base de datos adb_demo1 y en 10 para el resto de las tablas de esa base de datos.

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

Puede ejecutar la instrucción SHOW ADB_CONFIG para consultar la prioridad de programación actual de los trabajos BUILD.

Consultar el estado de un trabajo BUILD

Después de activar un trabajo BUILD de forma automática o manual, ejecute la siguiente instrucción SQL para consultar su estado durante los últimos tres días:

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

A continuación se describe el estado de los trabajos BUILD según los valores del parámetro status.

Valor de status

Descripción

INIT

El trabajo se está inicializando.

RUNNING

El trabajo se está ejecutando.

FINISH

El trabajo finalizó.

Preguntas frecuentes

¿Por qué la programación automática de trabajos BUILD no surte efecto?

Causa: Los parámetros de tiempo no están encerrados entre comillas invertidas ( ), por lo que no se analizan sintácticamente de manera correcta.

Solución: Al ejecutar la instrucción SET ADB_CONFIG RC_CSTORE_BUILD_SCHEDULE_PERIOD para configurar la programación automática, encierre los parámetros start y end entre comillas invertidas ( ). Por ejemplo, SET ADB_CONFIG RC_CSTORE_BUILD_SCHEDULE_PERIOD= indica que el sistema programe los trabajos BUILD entre las 0:00 y las 6:59.