AliSQL propose la fonctionnalité Purge Large File Asynchronously pour améliorer la stabilité de votre service de base de données.
Contexte
Lorsque vous exécutez l'instruction DROP TABLE pour supprimer des données, le fichier de données InnoDB correspondant est directement supprimé du système de fichiers. Si ce fichier est volumineux, sa suppression peut entraîner de graves problèmes de stabilité au sein du système de fichiers POSIX (Portable Operating System Interface). La fonctionnalité Purge Large File Asynchronously lance un thread chargé de supprimer le fichier de données de manière asynchrone. Lors de l'exécution de l'instruction DROP TABLE, le fichier de données correspondant est enregistré en tant que fichier temporaire, et le thread démarre afin d'assurer une suppression fluide et asynchrone.
Procédure
-
Exécutez l'instruction suivante pour consulter les paramètres des variables globales de votre instance RDS :
SHOW GLOBAL VARIABLES LIKE '%data_file_purge%';Le code ci-dessous présente un exemple de résultat de requête :
+----------------------------------------+-------+ | 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 | +----------------------------------------+-------+Le tableau suivant décrit les variables globales.
Variable
Description
innodb_data_file_purge
Indique si la fonctionnalité Purge Large File Asynchronously est activée.
innodb_data_file_purge_all_at_shutdown
Indique si tous les fichiers doivent être supprimés lors de l'arrêt de l'hôte hébergeant votre instance RDS.
innodb_data_file_purge_dir
Répertoire de stockage des fichiers temporaires.
innodb_data_file_purge_immediate
Indique si les fichiers de données sont conservés tandis que seuls leurs liens sont révoqués.
innodb_data_file_purge_interval
Intervalle entre les suppressions de fichiers, exprimé en millisecondes.
innodb_data_file_purge_max_size
Taille maximale d'un fichier unique pouvant être supprimé, exprimée en Mo.
innodb_print_data_file_purge_process
Indique si le système affiche une barre de progression pour suivre l'avancement de la suppression des fichiers.
RemarqueNous vous recommandons d'utiliser les paramètres suivants :
set global INNODB_DATA_FILE_PURGE = on; set global INNODB_DATA_FILE_PURGE_INTERVAL = 100; set global INNODB_DATA_FILE_PURGE_MAX_SIZE = 128; -
Exécutez l'instruction suivante pour consulter la progression de la suppression des fichiers :
select * from information_schema.innodb_purge_files;Le code ci-dessous présente un exemple de résultat de requête :
+--------+---------------------+--------------------+---------------+-------------------------+--------------+ | 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 | +--------+---------------------+--------------------+---------------+-------------------------+--------------+Le tableau suivant décrit les paramètres figurant dans le résultat renvoyé.
Parameter
Description
start_time
Instant auquel la suppression débute.
original_path
Chemin d'origine du dossier contenant les fichiers de données avant leur suppression.
original_size
Taille d'origine des fichiers de données avant leur suppression, exprimée en octets.
temporary_path
Chemin du dossier contenant les fichiers temporaires pendant leur suppression.
current_size
Taille des fichiers temporaires en attente de suppression, exprimée en octets.