Formation PUB020 : WordPress, 2023 Les données personnalisées WordPress

31.5 MyISAM vs InnoDB vs contraintes d'intégrité référentielle


Lorsqu'on développe nos propres fonctionnalités WordPress, il est intéressant d'ajouter des tables personnalisées dans la base de données WordPress.

Mais avant de se lancer tête baissée, il y a des considérations techniques à prendre en compte lorsqu'on ajoute des tables, peu importe si ces tables sont destinées à un site WordPress ou à une autre application.

Une des considérations importantes est le moteur de stockage. En gros, le moteur de stockage est constitué des algorithmes qui permettent au système de gestion de bases de données de stocker et de récupérer les informations à partir de requêtes SQL.

Nous n'entrerons pas ici dans les avantages et inconvénients de chacun des moteurs de stockage. Mentionnons simplement que les plus connus sont MyISAM, qui est plus rapide dans certains contextes, et InnoDB, qui est intéressant notamment pour gérer les contraintes d'intégrité référentielle.

▼Publicité Le texte se poursuit plus bas

Quel est le moteur de stockage privilégié par WordPress ?

Lors de la création de tables, WordPress ne spécifie pas quel moteur de stockage utiliser. Il utilise le moteur par défaut du serveur MySQL.

Ainsi, si vos tables sont créées avec le moteur MyISAM, c'est que votre serveur MySQL crée par défaut des tables MyISAM.

Si cela vous intéresse, je vous en fais la démonstration ici.

Lors de la création d'une table, il est possible de spécifier le moteur de stockage à utiliser à l'aide de la commande suivante :

MySQL

CREATE TABLE ... (

    ...

) ENGINE=InnoDB;

Voici un extrait du code que WordPress utilise pour créer une table lors de l'installation initiale. Vous pouvez trouver le code complet dans le fichier wp-admin/includes/schema.php.

Extrait du fichier WordPress wp-admin/includes/schema.php (PHP)

$blog_tables = "CREATE TABLE $wpdb->terms (

 term_id bigint(20) unsigned NOT NULL auto_increment,

 name varchar(200) NOT NULL default '',

 slug varchar(200) NOT NULL default '',

 term_group bigint(10) NOT NULL default 0,

 PRIMARY KEY  (term_id),

 KEY slug (slug($max_index_length)),
 KEY name (name($max_index_length))

) $charset_collate;

CREATE TABLE ... (

 ... 

) $charset_collate; ";

On y voit bien que le moteur n'est pas spécifié puisqu'on ne retrouve pas le mot-clé ENGINE dans les CREATE TABLE.

Il y a bien l'utilisation de la variable $charset_collate à la fin des CREATE TABLE mais cette variable contient de l'information du genre « DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ».

Aucune référence au moteur de stockage.

Lorsque vous créez vos tables personnalisées, il est correct d'utiliser le moteur de stockage par défaut de votre serveur MySQL.

Par contre, si vous préférez forcer l'utilisation d'un moteur particulier, suivez la technique expliquée sur la fiche « Technique pour forcer l'utilisation d'un moteur de stockage ».

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Par Christiane Lagacé
Dernière révision le 21 septembre 2022
Merci de partager !

Site fièrement hébergé chez A2 Hosting.

Soumettre