Mise à jour de MariaDB chez cdmon

Mise à jour de MariaDB chez cdmon

Chez cdmon, nous mettons à jour la version de MariaDB sur nos serveurs, en passant à la version 10.11. Cette mise à jour améliore les performances et la sécurité des bases de données, mais elle introduit également certains changements qui peuvent affecter certaines applications ou requêtes.

La mise à jour sera effectuée progressivement sur tous les serveurs cdmon. À un moment donné pendant la nuit, il peut y avoir une courte interruption d'environ 15 minutes. Dans la plupart des cas, vous n'avez rien à faire. Cependant, si votre application ou site web utilise des bases de données, nous vous recommandons de vérifier son fonctionnement après la mise à jour pour vous assurer que tout continue de fonctionner correctement.

Vous trouverez ci-dessous un résumé des principaux changements et mises à jour introduits dans cette nouvelle version MariaDB 10.11. Ces changements peuvent affecter votre application en fonction de la manière dont elle utilise la base de données.
 
1. Changements dans le stockage et le format des données
InnoDB
Le moteur de stockage InnoDB a subi plusieurs modifications qui peuvent influencer le comportement des tables et des données stockées :
  • Le format de fichier InnoDB est désormais toujours Barracuda (auparavant, il pouvait être "Antelope").
  • La variable innodb_large_prefix a été supprimée, donc les clés dans les tables InnoDB utilisent toujours la longueur maximale possible.
  • L'option innodb_file_format a été supprimée.
Remarque : Si vous utilisiez auparavant le format "Antelope" et que vos tables contenaient des lignes longues ou des index avec de grands préfixes, vous pourriez constater des différences dans le stockage ou les performances. Bien que la plupart des applications ne soient pas affectées, il est recommandé de vérifier les tables qui auraient pu dépendre des limitations du format précédent. De plus, si votre application tente d'insérer des données qui violent les contraintes InnoDB, comme des clés en double ou des données dépassant la taille autorisée, cela pouvait auparavant générer uniquement un avertissement.

Horodatages et dates (DATETIME)
Les types de données liés aux dates et heures ont été mis à jour pour améliorer la précision :
  • Les dates incluent désormais les millisecondes par défaut.
  • Si votre application attend des dates sans millisecondes, elle devra peut-être être adaptée.
Remarque : Si votre application compare des dates et heures sans tenir compte des millisecondes, vous pourriez rencontrer des écarts. Par exemple, une requête qui comparait auparavant 2025-03-06 11:48:21 peut maintenant retourner des résultats différents si les horodatages stockés incluent des millisecondes, comme 2025-03-06 11:48:21.123

JSON
Les fonctions liées à JSON ont été améliorées pour offrir une plus grande flexibilité et corriger des erreurs :
  • La fonction JSON_TABLE() permet désormais les noms de colonnes avec des caractères spéciaux entre guillemets.
  • Des erreurs ont été corrigées dans JSON_VALID() et JSON_QUERY(), ce qui peut affecter les validations JSON dans votre application.
Remarque : Si votre application utilise JSON_TABLE() pour extraire des données JSON et évitait auparavant les noms de colonnes avec des caractères spéciaux en raison de restrictions, vous pouvez désormais les utiliser directement. Ce changement facilite la manipulation des données JSON avec des structures plus complexes.

2. Changements dans l'exécution des requêtes SQL
ORDER BY et LIMIT
Des optimisations ont été implémentées dans l'exécution des requêtes qui utilisent ORDER BY avec LIMIT :
  • Optimisation améliorée : MariaDB a amélioré l'optimisation de ORDER BY ... LIMIT, ce qui peut modifier l'ordre des résultats si une clause ORDER BY explicite n'est pas utilisée. Si vos requêtes dépendent d'un ordre spécifique, assurez-vous qu'elles incluent toujours une clause ORDER BY définie.
Exemple : Si un ORDER BY n'est pas spécifié, l'ensemble des résultats peut varier entre les exécutions en raison des optimisations internes. Pour garantir un ordre cohérent, il est essentiel de spécifier la clause ORDER BY. Exemple de commande : SELECT * FROM employes ORDER BY date_embauche DESC LIMIT 10;

Fonctions SQL
Certaines fonctions SQL ont été mises à jour pour étendre la compatibilité et corriger des erreurs :
  • Les fonctions GREATEST() et LEAST() fonctionnent désormais correctement avec les valeurs de date et heure (DATETIME et TIMESTAMP).
  • Des erreurs ont été corrigées dans des fonctions telles que REPLACE(), LOCATE(), et d'autres fonctions liées aux chaînes de caractères.
Exemple : Si vous avez deux colonnes de dates et souhaitez obtenir la plus récente par ligne, vous pouvez utiliser : SELECT GREATEST(date_debut, date_fin) AS date_la_plus_recente FROM projets;
Auparavant, cela pouvait produire des résultats inattendus ou des erreurs, mais avec la mise à jour, la fonction gère correctement ces types de données.

GROUP BY
L'évaluation des conditions dans les requêtes utilisant GROUP BY a changé :
  • Les conditions dans HAVING sont désormais évaluées avant le regroupement.
  • Cela peut modifier les résultats des requêtes qui utilisent GROUP BY.
Remarque : Il est important de s'assurer que la condition dans HAVING est logique et alignée avec les données réelles, car l'évaluer avant le regroupement peut filtrer les enregistrements avant de les compter, modifiant ainsi le résultat attendu.

Nous vous recommandons de vérifier vos applications et d'effectuer des tests après la mise à jour pour garantir leur bon fonctionnement. Si vous avez des questions ou besoin d'assistance, notre équipe de support est disponible pour vous aider.

Pour des informations plus détaillées sur la mise à niveau depuis les versions précédentes, vous pouvez consulter les liens officiels MariaDB suivants :

Pour plus d'informations, vous pouvez nous contacter.