Todos los productos
Search
Centro de documentos

PolarDB:DDL paralelo

Última actualización: Sep 08, 2026

DDL paralelo acelera la creación de índices en tablas grandes al distribuir el trabajo en varios hilos en lugar de uno solo. Cuando hay recursos de hardware disponibles, reduce el tiempo de ejecución de DDL y acorta la ventana durante la cual se bloquean las operaciones posteriores del lenguaje de manipulación de datos (DML).

Requisitos previos

Antes de empezar, asegúrese de contar con:

  • Un clúster de PolarDB for MySQL que cumpla los requisitos de versión que se indican a continuación

La creación de índices secundarios requiere una de las versiones del clúster que se indican a continuación:

  • PolarDB for MySQL 8.0.2, versión de revisión 8.0.2.1.7 o posterior

  • PolarDB for MySQL 8.0.1, versión de revisión 8.0.1.1.10 o posterior

  • PolarDB for MySQL 5.7, versión de revisión 5.7.1.0.7 o posterior

La creación de índices de clave principal requiere una de las versiones del clúster que se indican a continuación:

  • PolarDB for MySQL 8.0.2, versión de revisión 8.0.2.2.9 o posterior

  • PolarDB for MySQL 8.0.1, versión de revisión 8.0.1.1.31 o posterior

Para comprobar la versión del clúster, consulte Query the version number.

Limitaciones

DDL paralelo admite la creación de índices de clave principal y de índices secundarios. No admite:

  • Índices de texto completo

  • Índices espaciales

  • Índices secundarios en columnas virtuales

Impacto en los recursos

DDL paralelo aumenta el uso de hilos, lo que incrementa el consumo de CPU, memoria y E/S. Cuando establezca un número alto de hilos paralelos, la operación usa más memoria. Si la instancia se queda sin memoria, puede producirse un error de memoria insuficiente (OOM) y afectar la estabilidad del clúster. Ejecute DDL paralelo durante horas de baja actividad o cuando el clúster tenga recursos de hardware suficientes, para evitar afectar las operaciones SQL simultáneas.

Habilite DDL paralelo

Establezca el número de hilos para la creación de índices secundarios

El parámetro innodb_polar_parallel_ddl_threads controla cuántos hilos se ejecutan en paralelo para cada operación DDL.

Parámetro

Nivel

Descripción

innodb_polar_parallel_ddl_threads

Sesión

Número de hilos paralelos por operación DDL. Rango: 1–16. Predeterminado: 1 (un solo hilo). Establezca cualquier valor distinto de 1 para habilitar DDL paralelo en la creación de índices secundarios.

Nota

Cuando se establece en 1, el sistema sigue usando internamente dos hilos paralelos.

Ejemplo:

-- Use 8 parallel threads for the current session
SET innodb_polar_parallel_ddl_threads = 8;

-- Create a secondary index using the configured thread count
ALTER TABLE t0 ADD INDEX idx_b (b);

Habilite la creación paralela de índices de clave principal

DDL paralelo para índices de clave principal requiere una activación de prueba adicional.

Importante

Para usar esta función, vaya a Quota Center. Busque la cuota con el Quota ID de polardb_mysql_pddl_for_pk y haga clic en Apply en la columna Actions para solicitar una prueba.

Parameter

Level

Description

innodb_parallel_build_primary_index

Global

Controla si se permite DDL paralelo para la creación de índices de clave principal. Valores válidos: ON (permitido), OFF (predeterminado, no permitido).

Optimice la fase de ordenación

Si el paralelismo de hilos predeterminado no cumple con sus requisitos de rendimiento, habilite sample sort para optimizar aún más la fase de ordenación.

Parameter

Level

Description

innodb_polar_use_sample_sort

Sesión

Habilita la optimización de sample sort durante la creación de índices. Valores válidos: ON, OFF (predeterminado).

Ejemplo:

SET innodb_polar_parallel_ddl_threads = 8;
SET innodb_polar_use_sample_sort = ON;

ALTER TABLE t0 ADD INDEX idx_b (b);

Optimice la fase de carga

Para acelerar aún más la construcción del árbol de índices, habilite la carga masiva paralela.

Parameter

Level

Description

innodb_polar_use_parallel_bulk_load

Sesión

Habilita la optimización de carga masiva paralela para la creación del árbol de índices. Valores válidos: ON, OFF (predeterminado).

Ejemplo — las tres optimizaciones habilitadas:

SET innodb_polar_parallel_ddl_threads = 8;
SET innodb_polar_use_sample_sort = ON;
SET innodb_polar_use_parallel_bulk_load = ON;

ALTER TABLE t0 ADD INDEX idx_b (b);

Prueba de rendimiento

Entorno de prueba

  • Clúster: Standard Edition de PolarDB for MySQL 8.0, 16 núcleos, 128 GB de memoria

  • Almacenamiento: 50 TB

Tabla de prueba

CREATE TABLE t0(
  a INT PRIMARY KEY,
  b INT) ENGINE=InnoDB;

Los datos de prueba se generaron mediante este procedimiento:

DELIMITER //
CREATE PROCEDURE populate_t0()
BEGIN
     DECLARE i int DEFAULT 1;
     WHILE (i <= $table_size) DO
             INSERT INTO t0 VALUES (i, 1000000 * RAND());
             SET i = i + 1;
     END WHILE;
END //
DELIMITER ;
CALL populate_t0();
Nota

Reemplace $table_size por el número de filas, como 1000000. La prueba usa tablas con 1,000,000, 10,000,000, 100,000,000 y 1,000,000,000 de filas, además de una tabla de 1 TB generada con Sysbench. Para obtener detalles sobre la configuración de Sysbench, consulte Test tools.

Método de prueba

Cada prueba mide el tiempo necesario para crear un índice secundario en la columna b (tipo INT) en tablas de tamaño creciente, con innodb_polar_parallel_ddl_threads establecido en 1, 2, 4, 8, 16 y 32.

Resultados de la prueba

Los gráficos que aparecen a continuación muestran el factor de aceleración respecto al DDL de un solo hilo (número de hilos = 1) con tres combinaciones de parámetros.

Solo paralelismo de hilos (innodb_polar_parallel_ddl_threads):

Thread parallelism speedup

Paralelismo de hilos + sample sort (innodb_polar_parallel_ddl_threads + innodb_polar_use_sample_sort):

Thread parallelism and sample sort speedup

Los tres parámetros (innodb_polar_parallel_ddl_threads + innodb_polar_use_sample_sort + innodb_polar_use_parallel_bulk_load):

All three parameters speedup

Contáctenos

Si tiene alguna pregunta sobre las operaciones DDL, Contact us.

Recursos relacionados

Si tiene preguntas sobre las operaciones DDL, contact technical support.