L'écriture atomique 16 Ko améliore les performances d'écriture d'ApsaraDB RDS for MySQL d'au moins 40 %, sans coût supplémentaire. Cette fonctionnalité offre à InnoDB une garantie matérielle selon laquelle chaque écriture de page de données de 16 Ko est atomique, rendant le mécanisme doublewrite inutile.
Fonctionnement
Le moteur InnoDB de MySQL lit et écrit les données par pages de 16 Ko, mais la plupart des systèmes de fichiers écrivent par blocs de 4 Ko. Sans protection supplémentaire, une coupure de courant en cours d'écriture peut laisser une page partiellement écrite, une situation dont InnoDB ne peut pas se remettre seul.
La solution traditionnelle d'InnoDB est le mécanisme doublewrite : chaque page sale est d'abord écrite dans le tampon doublewrite, puis vidée vers son emplacement réel. Cela transforme chaque vidage en deux opérations d'écriture au lieu d'une, doublant presque la charge d'E/S d'écriture.
L'écriture atomique 16 Ko adopte une approche différente. Au lieu d'écrire chaque page deux fois, elle demande au stockage sous-jacent de garantir que toute écriture de 16 Ko soit entièrement effectuée ou pas du tout. Avec cette garantie, le tampon doublewrite n'apporte aucune valeur ajoutée en matière de sécurité ; par conséquent, innodb_doublewrite est désactivé, ce qui réduit de moitié les E/S d'écriture.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Une instance RDS exécutant MySQL 5.7 ou MySQL 8.0
Type de stockage : SSD standard ou ESSD Premium
Facturation
L'écriture atomique 16 Ko est gratuite. L'activation ou la désactivation de cette fonctionnalité n'entraîne aucun frais.
Notes d'utilisation
Redémarrage de l'instance requis : L'instance redémarre lorsque vous activez ou désactivez l'écriture atomique 16 Ko. Prévoyez une interruption de service avant d'effectuer ces modifications.
Liaison entre les instances principales et en lecture seule : Si l'écriture atomique 16 Ko est activée sur l'instance principale, elle ne peut pas être désactivée sur les instances en lecture seule. La désactiver uniquement sur les instances en lecture seule créerait un décalage de performances entraînant un retard de réplication.
Héritage de la configuration : Les instances en lecture seule et les instances restaurées à partir d'une sauvegarde héritent du paramètre d'écriture atomique 16 Ko de l'instance source.
Activer ou désactiver l'écriture atomique 16 Ko
Les instances qui répondent aux prérequis et aux conditions suivantes ont l'écriture atomique 16 Ko activée par défaut :
Nouvelles instances : Achetées depuis la console ApsaraDB RDS le 14 mai 2025 ou après cette date.
Instances RDS YiTian existantes : Instances dont le type de produit n'a pas été modifié. Les instances standard existantes ne prennent pas en charge l'écriture atomique 16 Ko.
Ouvrez la liste des instances ApsaraDB RDS, sélectionnez une région et cliquez sur l'ID de l'instance cible.
Sur la page Basic Information, cliquez sur le commutateur 16K atomic write pour activer ou désactiver la fonctionnalité.
Tests de performance
Les résultats suivants ont été mesurés à l'aide de Sysbench oltp_write_only sur des instances High-availability Edition avec des ESSD Premium, en comparant les QPS avant et après l'activation de l'écriture atomique 16 Ko.
Configuration du test
Instances de test
| Edition | Storage type | Instance family | Instance type | Specs |
|---|---|---|---|---|
| High-availability | Premium ESSD | General-purpose | mysql.n2.large.2c | 4 cœurs, 8 Go |
| High-availability | Premium ESSD | Dedicated | mysql.x2.large.2c | 4 cœurs, 8 Go |
Données de test : 300 Go répartis sur 30 tables, avec 40 millions de lignes chacune.
Installer Sysbench (exemple CentOS) :
git clone https://github.com/akopytov/sysbench.git
cd sysbench
git checkout 0.5
yum -y install make automake libtool pkgconfig libaio-devel
yum -y install mariadb-devel
./autogen.sh
./configure
make -j
make install
Préparer les données de test :
sysbench oltp_write_only --tables=30 --table_size=40000000 --rand-type=special --rand-spec-pct=15 --threads=64 --time=100 prepare
Paramètres de test
| Parameter | Value | Description |
|---|---|---|
tables |
30 | Nombre de tables |
table_size |
40 000 000 | Lignes par table |
rand-type |
special | Distribution des nombres aléatoires |
rand-spec-pct |
15 | Pourcentage traité comme des valeurs spéciales |
threads |
64 | Threads simultanés |
time |
100 | Durée du test (secondes) |
Exécuter le test
sysbench oltp_write_only --tables=30 --table_size=40000000 --rand-type=special --rand-spec-pct=15 --threads=64 --time=100 run
Résultats des tests
Écriture atomique 16 Ko
-
Instance General-purpose (4 cœurs, 8 Go) : Les QPS ont augmenté de 48 % après l'activation de l'écriture atomique 16 Ko (orange).

-
Instance Dedicated (4 cœurs, 8 Go) : Les QPS ont augmenté de 47 % après l'activation de l'écriture atomique 16 Ko (orange).

Écriture atomique 16 Ko + Buffer Pool Extension (BPE)
Pour plus de détails sur la fonctionnalité Buffer Pool Extension (BPE) pour les ESSD Premium, consultez Utiliser la fonctionnalité d'accélération des E/S des ESSD généraux .
-
Instance General-purpose (4 cœurs, 8 Go) : Les QPS ont augmenté de 93 % après l'activation conjointe de l'écriture atomique 16 Ko et de BPE (orange).
