Dix ans aprĂšs la crĂ©ation de la branche 10.x, la version 11.0.0 de la base de donnĂ©es MariaDB a Ă©tĂ© publiĂ©e, proposant plusieurs amĂ©liorations et modifications significatives, affectant la compatibilitĂ©. La branche a actuellement une qualitĂ© alpha et sera prĂȘte pour des applications de production aprĂšs stabilisation. La formation de la prochaine branche significative MariaDB 12, contenant des modifications affectant la compatibilitĂ©, n'est pas attendue avant 10 ans (en 2032).
Le projet MariaDB développe une dérivation de MySQL, qui conserve autant que possible la compatibilité rétroactive tout en intégrant des moteurs de stockage supplémentaires et des fonctionnalités avancées. Le développement de MariaDB est supervisé par l'organisation indépendante MariaDB Foundation, selon un processus de développement ouvert et transparent, sans dépendance à des fournisseurs spécifiques. La base de données MariaDB remplace MySQL dans de nombreuses distributions Linux (RHEL, SUSE, Fedora, openSUSE, Slackware, OpenMandriva, ROSA, Arch Linux, Debian) et est intégrée dans de grands projets tels que Wikipedia, Google Cloud SQL et Nimbuzz.
L'amĂ©lioration clĂ© de la branche MariaDB 11 est la transition de l'optimiseur de requĂȘtes vers un nouveau modĂšle de coĂ»t (cost model), offrant une prĂ©diction plus prĂ©cise des coĂ»ts de chaque plan d'exĂ©cution de requĂȘte. Bien que le nouveau modĂšle permette de surmonter certains goulets d'Ă©tranglement en matiĂšre de performance, il se pourrait qu'il ne soit pas optimal dans tous les scĂ©narios, et il est possible que certains requĂȘtes soient ralenties. Les utilisateurs sont donc invitĂ©s Ă participer aux tests et Ă informer les dĂ©veloppeurs en cas de problĂšmes.
Le modĂšle prĂ©cĂ©demment utilisĂ© Ă©tait bien adaptĂ© pour trouver l'index optimal, mais prĂ©sentait des problĂšmes d'applicabilitĂ© pour les opĂ©rations de scan de table, de scan d'index ou de sĂ©lection par plage. Dans le nouveau modĂšle, ce dĂ©faut a Ă©tĂ© corrigĂ© grĂące Ă un ajustement du poids de base des opĂ©rations avec le moteur de stockage. Lors de l'Ă©valuation des performances des opĂ©rations dĂ©pendant de la vitesse d'accĂšs au disque, telles que le scan sĂ©quentiel des enregistrements, on suppose maintenant que les donnĂ©es sont stockĂ©es sur un SSD, offrant une vitesse de lecture de 400 Mo par seconde. De plus, un rĂ©glage a Ă©tĂ© effectuĂ© sur d'autres paramĂštres de poids de l'optimiseur, permettant par exemple d'utiliser les index pour les opĂ©rations « ORDER BY/GROUP BY » dans des sous-requĂȘtes et d'accĂ©lĂ©rer le travail avec des tables trĂšs petites.
Il est notĂ© que le nouveau modĂšle de poids permettra de choisir un plan d'exĂ©cution de requĂȘte plus optimal dans les situations suivantes :
- Lors de l'utilisation de requĂȘtes impliquant plus de 2 tables.
- Lorsqu'il existe des index contenant un grand nombre de valeurs identiques.
- Lors de l'utilisation de plages couvrant plus de 10 % de la table.
- Lors de la prĂ©sence de requĂȘtes complexes oĂč toutes les colonnes utilisĂ©es ne sont pas indexĂ©es.
- Lorsqu'il existe des requĂȘtes faisant appel Ă diffĂ©rents moteurs de stockage (par exemple, lorsqu'une requĂȘte accĂšde Ă des tables dans les moteurs InnoDB et Memory).
- Lors de l'utilisation de FORCE INDEX pour amĂ©liorer le plan de requĂȘte.
- Lors de la dĂ©gradation du plan de requĂȘte en cas d'utilisation de « ANALYZE TABLE ».
- Lorsque la requĂȘte couvre un grand nombre de tables dĂ©rivĂ©es (un grand nombre de SELECT imbriquĂ©s).
- Lors de l'utilisation d'expressions ORDER BY ou GROUP BY qui sont couvertes par des index.
Les principales violations de compatibilité dans la branche MariaDB 11 :
- Les droits SUPER ne permettent plus d'effectuer des actions pour lesquelles des privilÚges séparés sont requis. Par exemple, pour modifier le format des journaux binaires, des droits BINLOG ADMIN seront nécessaires.
- La mise en Ćuvre d'un tampon de changements dans InnoDB a Ă©tĂ© supprimĂ©e.
- innodb_flush_method et innodb_file_per_table ont été déclarés obsolÚtes.
- Le support des noms mysql* a été déclaré obsolÚte.
- Le paramĂštre explicit_defaults_for_timestamp ne peut plus ĂȘtre dĂ©fini Ă 0.
- Les liens symboliques pour la compatibilité avec MySQL ont été déplacés vers un paquet séparé.
- La valeur par défaut du paramÚtre innodb_undo_tablespaces a été modifiée à 3.
Source : opennet.ru
