Todos los productos
Search
Centro de documentos

ApsaraDB RDS:Limitación de DDL

Última actualización: Sep 03, 2026

Las operaciones DDL como ALTER TABLE y OPTIMIZE TABLE pueden saturar los recursos de E/S y degradar el rendimiento de las cargas de trabajo concurrentes de lectura y escritura, especialmente en MySQL 8.0, que admite DDL paralelo. AliSQL amplía MySQL con limitación de E/S por sesión para DDL, lo que permite establecer un límite de bytes por segundo (BPS) y operaciones de entrada/salida por segundo (IOPS). De este modo, el DDL se mantiene dentro de un presupuesto de E/S definido sin detener ni pausar la operación.

Requisitos previos

Antes de empezar, asegúrese de que su instancia cumple con los siguientes requisitos:

  • Versión principal del motor: MySQL 8.0

  • Versión secundaria del motor: 20251031 o posterior

Si su instancia no cumple con estos requisitos, actualice la versión secundaria del motor o la versión principal del motor.

Parámetros

Parameter

Scope

Type

Default

Valid values

Restart required

loose_innodb_ddl_io_limit_enabled

Global

Boolean

OFF

ON, OFF

No

innodb_ddl_bps_limit

Session

LONG

0 (no limit)

0–18446744073709551615

No

innodb_ddl_iops_limit

Session

LONG

0 (no limit)

0–18446744073709551615

No

loose_innodb_ddl_io_limit_enabled es el interruptor principal. Establézcalo en ON de forma global antes de configurar los límites de BPS e IOPS de sesión. Los parámetros de sesión surten efecto inmediatamente para las instrucciones DDL subsiguientes en esa misma sesión y se restablecen a 0 (sin límite) cuando finaliza la sesión.

Modifique parámetros en la consola

  1. Vaya a la página Instances. En la barra de navegación superior, seleccione la región donde reside su instancia RDS y haga clic en el ID de la instancia.

  2. En el panel de navegación izquierdo, haga clic en Parameter Settings.

  3. En la pestaña Editable Parameters, busque el parámetro y establezca su valor.

  4. Haga clic en OK y luego en Submit Parameters. En el cuadro de diálogo, seleccione cuándo aplicar el cambio.

Habilite la limitación de DDL

Paso 1: Habilite la función de forma global.

En la consola, establezca loose_innodb_ddl_io_limit_enabled en ON mediante los pasos descritos en Modifique parámetros en la consola y envíe el cambio.

Paso 2: Establezca los límites de BPS e IOPS para la sesión.

Antes de ejecutar una instrucción DDL, configure los límites en la misma sesión. Defina uno o ambos límites según su capacidad de E/S.

-- Limit DDL BPS to 100 MB/s
SET SESSION innodb_ddl_bps_limit = 100 * 1024 * 1024;

-- Limit DDL IOPS to 5000
SET SESSION innodb_ddl_iops_limit = 5000;

Paso 3: Ejecute la instrucción DDL.

La limitación de tasa entra en vigor inmediatamente para las instrucciones DDL ejecutadas después de los comandos SET SESSION dentro de la misma sesión.

Notas de uso

Alcance de sesión

innodb_ddl_bps_limit y innodb_ddl_iops_limit son parámetros de sesión. Sus valores se restablecen a 0 (sin límite) cuando finaliza la sesión. Vuelva a configurarlos al inicio de cada sesión en la que planea ejecutar operaciones DDL con limitación de tasa.

Funcionamiento

A continuación se muestra el comportamiento de E/S con y sin limitación de DDL.

-- Run DDL without rate limiting
ALTER TABLE t1 ADD INDEX idx_1(c1);
ALTER TABLE t1 DROP INDEX idx_1;
OPTIMIZE TABLE t1;

-- Run the same DDL with a BPS limit of 160 MB/s
SET SESSION innodb_ddl_bps_limit = 160 * 1024 * 1024;
ALTER TABLE t1 ADD INDEX idx_1(c1);
ALTER TABLE t1 DROP INDEX idx_1;
OPTIMIZE TABLE t1;

image.png

El gráfico muestra que la ejecución con limitación de tasa mantiene el consumo de E/S dentro del límite configurado durante toda la operación DDL, mientras que la ejecución sin restricciones genera picos de E/S.