Todos los productos
Search
Centro de documentos

ApsaraDB RDS:Uso de binlog cache free flush

Última actualización: Sep 03, 2026

Cuando se confirma una transacción grande, ApsaraDB RDS for MySQL mantiene un bloqueo de escritura mientras vuelca los eventos del registro binario desde la caché de sesión hacia un archivo de registro binario. Si la caché del registro binario alcanza decenas de GB, este bloqueo detiene todas las solicitudes de escritura y puede agotar los recursos de E/S, lo que deja a la instancia sin respuesta.

La función binlog cache free flush elimina este cuello de botella al convertir los archivos temporales de la caché del registro binario directamente en archivos de registro binario durante la confirmación, en lugar de leer y reescribir cada evento bajo un bloqueo. Esto reduce el tiempo de confirmación de transacciones grandes, disminuye el consumo de E/S y mantiene la capacidad de respuesta de la instancia.

Requisitos previos

Antes de empezar, asegúrese de que:

  • Su instancia RDS ejecute MySQL 8.0 o MySQL 5.7

  • La versión menor del motor sea 20240731 o posterior

Para comprobar la versión menor del motor, inicie sesión en la consola de ApsaraDB RDS y vaya a la página Basic Information. En la sección Configuration Information, compruebe si se muestra el botón Upgrade Kernel Version. Si aparece, haga clic en él para consultar y actualizar la versión menor del motor. Si no se muestra, la instancia ya cuenta con la versión menor más reciente. Para obtener más información, consulte Update the minor engine version.

Habilitar y configurar la función

Habilitar la función

Ejecute el siguiente comando para habilitar binlog cache free flush:

SET GLOBAL binlog_cache_free_flush = on;

El cambio surte efecto de inmediato. No es necesario reiniciar la instancia.

Comprobar que la función está activa

SHOW GLOBAL VARIABLES LIKE 'binlog_cache_free_flush';

Ajustar el umbral

El parámetro binlog_cache_free_flush_limit_size define el tamaño mínimo de datos del registro binario que desencadena la conversión. El valor predeterminado es 256 MB, por lo que solo las transacciones cuyos datos de registro binario superen este tamaño utilizan la ruta de vaciado libre.

Para aplicar la optimización a transacciones más pequeñas, reduzca el umbral:

SET GLOBAL binlog_cache_free_flush_limit_size = <size-in-bytes>;

Deshabilitar la función

SET GLOBAL binlog_cache_free_flush = off;

Parámetros

Parámetro

Valor predeterminado

Descripción

binlog_cache_free_flush

off

Habilita o deshabilita la función. Variable global del sistema. Surte efecto inmediatamente sin necesidad de reiniciar la instancia. Valores válidos: on, off.

binlog_cache_free_flush_limit_size

268435456 (256 MB)

Umbral que desencadena la conversión. Cuando los datos del registro binario de una transacción superan este valor, los archivos temporales en la caché del registro binario se convierten en archivos de registro binario durante la confirmación. Rango de valores: 20971520–18446744073709551615 bytes.

Funcionamiento

Caché del registro binario

image

Cada sesión dispone de su propia caché de registro binario, compuesta por espacio en memoria (limitado por binlog_cache_size) y archivos temporales en disco. Cuando los eventos de una transacción exceden el límite de memoria, se almacenan en un archivo temporal.

Al confirmar la transacción, el motor lee cada evento de la caché, actualiza la posición final y la suma de comprobación, y los escribe en el archivo de registro binario bajo un bloqueo de escritura. Este bloqueo garantiza que los eventos se escriban sin interrupciones, pero bloquea otras transacciones durante todo el proceso de vaciado.

Impacto de las escrituras de registro binario en transacciones grandes

image

Cuando la caché del registro binario de una transacción alcanza decenas de GB, su vaciado durante la confirmación provoca dos problemas:

  • Solicitudes de escritura bloqueadas: El bloqueo de escritura se mantiene durante todo el vaciado, lo que impide que otras transacciones escriban.

  • Agotamiento de E/S: La escritura secuencial de gran tamaño consume recursos de E/S y puede dejar la instancia sin respuesta.

Cómo resuelve esto binlog cache free flush

image

AliSQL optimiza el mecanismo de caché del registro binario para que los archivos temporales en la caché puedan convertirse directamente en archivos de registro binario. Dos cambios hacen esto posible:

  • Espacio de encabezado reservado: Al escribir eventos en el archivo temporal, se reserva espacio al inicio para los encabezados del archivo de registro binario. Cuando el archivo temporal se convierte en un archivo de registro binario, ese espacio reservado se llena con los encabezados necesarios, sin requerir una escritura adicional.

  • Posiciones finales precalculadas: Cada evento calcula su posición final según el tamaño del espacio reservado, por lo que las posiciones ya son correctas después de la conversión.

Contenido del archivo de registro binario convertido

image

Cuando se confirma una transacción grande, el espacio reservado al inicio del archivo temporal se llena con los siguientes datos antes de la conversión:

Datos

Descripción

Encabezado de archivo

El número mágico de 4 bytes [0xFE 'bin'] que identifica el archivo como un registro binario

Eventos de encabezado

El evento de descripción de formato y el evento de identificador de transacción global (GTID) anterior

Evento vacío

Un evento de tipo ignorable que llena cualquier espacio reservado restante

Evento GTID

El GTID de la transacción que se confirma, generado en el momento de la confirmación

El resto del archivo conserva los eventos originales de la transacción: eventos de consulta, eventos de asignación de tablas, eventos basados en filas y eventos XID.

image

Diferencias respecto a un archivo de registro binario estándar

Los archivos de registro binario convertidos difieren de los archivos estándar en dos aspectos:

  • Contienen un evento vacío (tipo ignorable) que ocupa el espacio reservado restante.

  • La suma de comprobación está deshabilitada de forma predeterminada.

La función binlog cache free flush no modifica el formato del archivo de registro binario. La replicación y las herramientas de terceros no se ven afectadas.

Efectos de la optimización

image.png

La figura compara los tiempos de confirmación de transacciones grandes en instancias que utilizan Enterprise SSDs (ESSDs) de nivel de rendimiento 1 (PL1) y Premium Local SSDs, con la función habilitada y deshabilitada. Habilitar binlog cache free flush reduce el tiempo de confirmación y resuelve tanto el agotamiento de recursos de E/S como la larga duración del bloqueo de escritura.