Magento SQL : le guide pour optimiser votre base de données

Dans le monde du e-commerce, Magento s’impose comme une plateforme puissante et flexible. Pour exploiter pleinement ses capacités, une gestion efficace de la base de données MySQL est essentielle. Une manipulation inadéquate peut entraîner des dysfonctionnements, des pertes de données ou des problèmes de performance. Il est donc crucial de maîtriser les scripts d’installation et de mise à jour de Magento pour assurer la stabilité et l’évolutivité de votre boutique en ligne.


Pourquoi utiliser les classes Varien pour la gestion de la base de données ?

Magento propose des classes spécifiques, notamment Varien_Db_Ddl_Table, pour interagir avec la base de données. L’utilisation de ces classes présente plusieurs avantages :

Compatibilité : Les classes Varien assurent une compatibilité ascendante avec les différentes versions de Magento, réduisant ainsi les risques de rupture lors des mises à jour.

Abstraction du SQL pur : En utilisant les classes Varien, vous vous affranchissez des requêtes SQL directes, ce qui rend votre code plus propre et maintenable.

Évolutivité : Si le nom d’une table change dans les fichiers XML de configuration, vos scripts continueront de fonctionner correctement sans nécessiter de modifications majeures.

Format des scripts

Depuis Magento 1.6, les scripts de setup suivent une convention de nommage spécifique :

Installation initiale : install-0.0.1.php (où 0.0.1 représente la version initiale du module).

Mise à jour : upgrade-0.0.1-0.0.4.php (pour une mise à jour de la version 0.0.1 à 0.0.4).

La performance de Magento se met au service des e-commerçants depuis toujours, chez 410 nous croyons à cette puissance qui révolutionne constamment l’expérience d’achat en ligne.

Optimiser Magento

Votre site Magento est en perte de vitesse ?

Demander mon pré-audit

Structure des scripts de setup dans Magento

Les scripts de setup sont essentiels pour installer ou mettre à jour les modules Magento. Ils permettent de définir ou modifier la structure de la base de données en fonction des besoins spécifiques de votre module.


Forte de développeurs certifiés Magento / Adobe Commerce et d’une expertise éprouvée, notre agence web accompagne les entreprises à chaque étape de leur projet e-commerce, en alliant innovation, personnalisation, et résultats mesurables.

CMS Magento

Types de champs MySQL dans Magento

Lors de la définition de colonnes dans une table, il est important de spécifier le type de données approprié. Magento, via la classe Varien_Db_Ddl_Table, propose une variété de types de données :

Optimisation base de données
  • TYPE_BOOLEAN : Pour les valeurs booléennes (vrai/faux).
  • TYPE_SMALLINT : Entier de petite taille.
  • TYPE_INTEGER : Entier standard.
  • TYPE_BIGINT : Entier de grande taille.
  • TYPE_FLOAT : Nombre à virgule flottante.
  • TYPE_DECIMAL : Nombre décimal avec une précision définie.
  • TYPE_DATE : Date sans heure.
  • TYPE_TIMESTAMP : Horodatage Unix, utile pour les enregistrements de date et d’heure.
  • TYPE_DATETIME : Date et heure combinées.
  • TYPE_TEXT : Texte de longueur variable.
  • TYPE_BLOB : Données binaires de grande taille.

Création d’une table avec Varien_Db_Ddl_Table

Pour créer une nouvelle table dans Magento, la classe Varien_Db_Ddl_Table offre une interface fluide et intuitive.

Voici un exemple illustrant la création d'une table simple :
$table = $installer->getConnection()
    ->newTable($installer->getTable('nom_de_votre_table'))
    ->addColumn('id', Varien_Db_Ddl_Table::TYPE_INTEGER, null, [
        'identity' => true,
        'nullable' => false,
        'primary'  => true,
    ], 'Identifiant')
    ->addColumn('titre', Varien_Db_Ddl_Table::TYPE_TEXT, 255, [
        'nullable' => false,
    ], 'Titre')
    ->addColumn('contenu', Varien_Db_Ddl_Table::TYPE_TEXT, '64k', [
        'nullable' => false,
    ], 'Contenu')
    ->addColumn('date_creation', Varien_Db_Ddl_Table::TYPE_TIMESTAMP, null, [
        'nullable' => false,
        'default'  => Varien_Db_Ddl_Table::TIMESTAMP_INIT,
    ], 'Date de création')
    ->setComment('Table de démonstration');
$installer->getConnection()->createTable($table);

Dans cet exemple, nous créons une table nommée nom_de_votre_table avec quatre colonnes :

  • id : Identifiant unique de type entier, auto-incrémenté et clé primaire.
  • titre : Champ texte de 255 caractères pour le titre.
  • contenu : Champ texte pouvant contenir jusqu’à 64 Ko de données pour le contenu.
  • date_creation : Horodatage indiquant la date et l’heure de création de l’enregistrement.

L’utilisation de Varien_Db_Ddl_Table assure que la structure de votre base de données est conforme aux standards de Magento, facilitant ainsi la maintenance et les futures mises à jour.


Modification d’une table existante

Outre la création, il est fréquent de devoir modifier la structure d’une table existante, que ce soit pour ajouter une nouvelle colonne, changer un type de données ou supprimer un champ devenu obsolète.

Un exemple de modification de table avec Varien_Db_Adapter_Interface
$installer->getConnection()
    ->addColumn(
        $installer->getTable('nom_de_votre_table'),
        'nouvelle_colonne',
        [
            'type'     => Varien_Db_Ddl_Table::TYPE_TEXT,
            'length'   => 255,
            'nullable' => false,
            'comment'  => 'Nouvelle colonne ajoutée'
        ]
);

Ce code ajoute une colonne nouvelle colonne de type TEXT (255 caractères) à une table existante.

De même, pour supprimer une colonne, on utilise :
$installer->getConnection()->dropColumn($installer->getTable('nom_de_votre_table'), 'ancienne_colonne');

Ces opérations permettent d’adapter votre base de données aux évolutions fonctionnelles de votre module tout en garantissant une compatibilité avec Magento.


Suppression d’une table

Si une table n’est plus nécessaire, il est important de la supprimer proprement afin de ne pas surcharger inutilement la base de données. Voici comment procéder :

Suppression d'une table
$installer->getConnection()->dropTable($installer->getTable('nom_de_votre_table'));

Magento gère automatiquement les dépendances, mais il est toujours recommandé de vérifier si d’autres modules utilisent encore cette table avant de la supprimer.


Optimisation et bonnes pratiques

Afin d’assurer la pérennité et la performance de votre base de données Magento, appliquez les bonnes pratiques suivantes :

  • Utiliser les transactions SQL : Lorsque vous effectuez plusieurs modifications critiques en base, utilisez beginTransaction() et commit() pour éviter les incohérences en cas d’échec d’une requête.
  • Indexation des colonnes clés : Ajoutez des index sur les colonnes fréquemment utilisées dans les requêtes WHERE pour optimiser les performances.
  • Nettoyage des anciennes données : Purgez régulièrement les tables de logs (log_visitor, log_url) pour alléger la base et améliorer les performances.
  • Utiliser le cache Magento : Activez et configurez correctement le cache pour minimiser les accès à la base de données.

Conclusion : Une gestion optimisée pour un Magento performant

Une gestion efficace de la base de données est cruciale pour assurer la stabilité, la performance et l’évolutivité de votre boutique Magento. L’utilisation des classes Varien_Db_Ddl_Table et Varien_Db_Adapter_Interface permet d’interagir avec MySQL de manière sécurisée et standardisée. En appliquant les bonnes pratiques et en maintenant une base de données propre et optimisée, vous garantissez un fonctionnement fluide de votre site e-commerce.

Si vous souhaitez aller plus loin et optimiser votre base de données pour un Magento plus rapide et sécurisé, n’hésitez pas à faire appel à un expert. La cybersécurité et la performance de votre boutique sont des enjeux stratégiques à ne pas négliger.

Marie-Alexine est une experte en SEO spécialisée dans le netlinking. Grâce à son expertise pointue, elle développe des stratégies de maillage efficaces pour améliorer la visibilité et l’autorité des sites web. Son approche repose sur une sélection rigoureuse de liens de qualité et une analyse approfondie des opportunités de partenariats

Christophe Vidal vous répond
Christophe Vidal vous répondAssocié et directeur commercial – sous 48h ouvrées
+300 clients depuis 2017

Votre pré-audit Magento offert

Technique, performance, SEO, Paid : un expert analyse votre site et vous rappelle avec des propositions concrètes.

Gratuit et sans engagement

+234%de CA en 2 ans
+45%de ventes
6langues

Migration Magento 2 pour les marques du Groupe Blanchon, PIM et ERP synchronisés, catalogue servi en 6 langues. Refonte technique, reprise du SEO et accompagnement continu : le site absorbe la saisonnalité sans incident.

62pays
4langues
57partenaires dans le monde

Le projet de refonte de notre site web nécessitait l’accompagnement d’un expert du développement Magento, de l’UX design et de référencement. Nous avons trouvé ces trois caractéristiques.

Annabelle Meli — Responsable marketing digital chez Enlaps.io
102 000pages vues dans les 48h après l’ouverture
31matchs différents

Pour la billetterie de la Coupe du Monde de Rugby 2023, nous avons conçu une plateforme Magento sur-mesure capable de gérer des flux de dizaines de milliers d'utilisateurs en simultané. Nous avons transformé des défis techniques complexes en une solution agile et performante, optimisée dès sa conception par notre expertise SEO.

410-gone, je vous recommanderai sans hésiter pour la proximité, la réactivité, l’enthousiasme et le côté humain sur chaque projet.

Lucas Chevalier — Responsable Digital chez Couleur
502 M€Chiffre d’affaires consolidé
8sites Magento en production
+900salariés

410-Gone, c’est une équipe compétente, qui sait s’adapter aux besoins spécifiques de ses clients et qui apporte des solutions efficaces, notamment en SEO et sur Magento. Leur support nous a permis d’évoluer et d’optimiser nos sites au fil du temps.

Jérémy Diguet-Dickson — Responsable Digital – Thermador Groupe
1 / 4