AliSQL ofrece la función Purge Large File Asynchronously para mejorar la estabilidad de su servicio de base de datos.
Contexto
Si ejecuta la sentencia DROP TABLE para eliminar datos, el archivo de datos de InnoDB correspondiente se elimina directamente del sistema de archivos. Si este archivo es grande, su eliminación provoca problemas graves de estabilidad en el sistema de archivos POSIX (Portable Operating System Interface). La función Purge Large File Asynchronously inicia un hilo que elimina el archivo de datos de forma asíncrona. Al ejecutar la sentencia DROP TABLE, el archivo de datos correspondiente se guarda como archivo temporal y se inicia un hilo para eliminarlo de manera asíncrona y gradual.
Procedimiento
-
Ejecute la siguiente sentencia para consultar la configuración de variables globales de su instancia RDS:
SHOW GLOBAL VARIABLES LIKE '%data_file_purge%';A continuación se muestra un ejemplo del resultado de la consulta:
+----------------------------------------+-------+ | Variable_name | Value | +----------------------------------------+-------+ | innodb_data_file_purge | ON | | innodb_data_file_purge_all_at_shutdown | OFF | | innodb_data_file_purge_dir | | | innodb_data_file_purge_immediate | OFF | | innodb_data_file_purge_interval | 100 | | innodb_data_file_purge_max_size | 128 | | innodb_print_data_file_purge_process | OFF | +----------------------------------------+-------+La siguiente tabla describe las variables globales.
Variable
Descripción
innodb_data_file_purge
Indica si se habilita la función Purge Large File Asynchronously.
innodb_data_file_purge_all_at_shutdown
Indica si se eliminan todos los archivos al apagar el host donde reside su instancia RDS.
innodb_data_file_purge_dir
Directorio donde se almacenan los archivos temporales.
innodb_data_file_purge_immediate
Indica si se conservan los archivos de datos y solo se revocan sus vínculos.
innodb_data_file_purge_interval
Intervalo de eliminación de archivos. Unidad: milisegundos.
innodb_data_file_purge_max_size
Tamaño máximo de un solo archivo que puede eliminarse. Unidad: MB.
innodb_print_data_file_purge_process
Indica si el sistema muestra una barra de progreso durante la eliminación de archivos.
NotaSe recomienda utilizar la siguiente configuración:
set global INNODB_DATA_FILE_PURGE = on; set global INNODB_DATA_FILE_PURGE_INTERVAL = 100; set global INNODB_DATA_FILE_PURGE_MAX_SIZE = 128; -
Ejecute la siguiente sentencia para consultar el progreso de eliminación de archivos:
select * from information_schema.innodb_purge_files;A continuación se muestra un ejemplo del resultado de la consulta:
+--------+---------------------+--------------------+---------------+-------------------------+--------------+ | log_id | start_time | original_path | original_size | temporary_path | current_size | +--------+---------------------+--------------------+---------------+-------------------------+--------------+ | 0 | 2021-05-14 14:40:01 | ./file_purge/t.ibd | 146800640 | ./#FP_210514 14:40:01_9 | 79691776 | +--------+---------------------+--------------------+---------------+-------------------------+--------------+La siguiente tabla describe los parámetros del resultado devuelto.
Parámetro
Descripción
start_time
Momento en que inicia la eliminación.
original_path
Ruta original de la carpeta donde se almacenaban los archivos de datos antes de su eliminación.
original_size
Tamaño original de los archivos de datos antes de su eliminación. Unidad: bytes.
temporary_path
Ruta de la carpeta donde se almacenan los archivos temporales durante la eliminación.
current_size
Tamaño actual de los archivos temporales pendientes de eliminación. Unidad: bytes.