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.
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 :
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.
$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 ».
▼Publicité