Performances et surveillance
Optimiser la table wp_options et les données de type « autoload »
La table wp_options stocke les options de WordPress, des extensions et des thèmes. Certaines sont chargées ensemble en autoload pour éviter des recherches répétées. Si cet ensemble devient trop volumineux, il peut augmenter le travail de lecture, de désérialisation et la mémoire, même si vous utilisez un cache d'objets.
Chaque option n'est pas forcément lue séparément ni à chaque accès au serveur : WordPress réutilise l'ensemble alloptions, et un cache de page peut éviter complètement d'exécuter WordPress.
Mesurer sans modifier les données
Vérifiez le préfixe de votre installation. Les exemples utilisent wp_options ; en multisite, vous devez identifier le site et la table correspondante. Depuis l'onglet SQL de phpMyAdmin, calculez le nombre et les octets :
SELECT COUNT(*) AS opciones, COALESCE(SUM(OCTET_LENGTH(option_value)), 0) AS bytes, ROUND(COALESCE(SUM(OCTET_LENGTH(option_value)), 0) / 1024, 2) AS kib FROM wp_options WHERE autoload IN ('yes', 'on', 'auto-on', 'auto');
La requête inclut les valeurs que WordPress considère aujourd'hui comme chargées automatiquement par défaut. Une installation peut les filtrer ; consultez la fonction des valeurs autoload et le comportement de votre version.
La Santé du site peut avertir si l'ensemble dépasse son seuil, qui dépend de la version et des filtres. Aucune taille universelle ne garantit un problème : rapprochez la mesure de la mémoire et des temps réels.
Repérer les options volumineuses
SELECT option_name, autoload, OCTET_LENGTH(option_value) AS bytes FROM wp_options WHERE autoload IN ('yes', 'on', 'auto-on', 'auto') ORDER BY OCTET_LENGTH(option_value) DESC LIMIT 20;
Commencez par les noms et les tailles. Vous n'avez pas besoin d'exporter les valeurs complètes pour établir les priorités ; elles peuvent contenir des identifiants ou des données d'utilisateurs.
Identifiez l'extension ou le thème responsable en cherchant le nom exact dans son code et sa documentation. Désactivé ne veut pas dire abandonné : ses données peuvent être nécessaires s'il est réactivé. Testez un nettoyage ou un changement d'autoload sur un clone avec une sauvegarde restaurable, en utilisant l'API de WordPress ou l'outil du composant.
Ne modifiez pas les valeurs sérialisées et ne passez pas en masse toutes les options en non-autoload. Vous pourriez casser des données ou remplacer un chargement groupé par de nombreuses requêtes individuelles.
Examiner toute la table
Si l'autoload n'explique pas la taille, relancez la requête sans le filtre :
SELECT option_name, autoload, OCTET_LENGTH(option_value) AS bytes FROM wp_options ORDER BY OCTET_LENGTH(option_value) DESC LIMIT 20;
Les octets des valeurs n'incluent pas tout l'espace de la table et des index. Les comptages qu'affiche un outil pour InnoDB peuvent être estimés ; utilisez COUNT(*) quand vous avez besoin d'un comptage exact, en tenant compte de son coût sur les grandes tables.
Cron, transients et sessions
Si l'option cron grossit, examinez les tâches planifiées et le composant qui les ajoute. Ne supprimez pas et ne modifiez pas sa structure sérialisée. Le guide de WP-Cron explique comment changer le déclencheur sans arrêter les tâches nécessaires.
Les transients ont une durée de vie maximale et peuvent disparaître avant. Selon la configuration, ils sont stockés dans des tables ou dans un cache persistant ; ils ne sont pas tous supprimés dès qu'ils atteignent leur date. Pour les examiner sans afficher les valeurs :
wp transient list --fields=name,expiration
Si vous avez validé la sauvegarde et devez supprimer ceux qui ont expiré, utilisez wp transient delete --expired. S'ils réapparaissent en excès, corrigez le composant qui les génère.
Les lignes de sessions dépendent de l'extension ; ce ne sont pas forcément les connexions standard de WordPress. Un nettoyage générique basé sur une ressemblance de nom peut faire perdre des paniers ou un travail en cours. Utilisez la durée de conservation et l'outil du composant responsable.
Index et Redis
WordPress crée déjà des index sur ses tables. Avant d'en ajouter un autre, vérifiez ceux qui existent :
SHOW INDEX FROM wp_options;
Examinez le plan de la requête lente avec EXPLAIN et testez tout index sur un clone. N'ajoutez pas un index composé simplement parce que la table est volumineuse : il coûte aussi de l'espace et du travail à chaque écriture.
Le cache d'objets avec Redis peut réduire les lectures répétées, mais il ne dispense pas d'examiner un ensemble d'options disproportionné. Après chaque modification, comparez les temps, la mémoire, la configuration et les tâches pour vérifier que l'amélioration n'a pas modifié le fonctionnement.
Cela peut aussi vous aider
- Améliorer les performances de la base de données de WordPress avec Index WP MySQL For Speed Évaluez les index de WordPress avec Index WP MySQL For Speed, vérifiez les modifications avant de le...
- Requêtes SQL lentes de type « SELECT SQL_CALC_FOUND_ROWS » Diagnostiquez les requêtes lentes de WordPress avec SQL_CALC_FOUND_ROWS, identifiez leur origine et...
- Requêtes SQL pour nettoyer les données orphelines et purger la base de données de WordPress Nettoyez les données orphelines, les révisions et les transients de WordPress avec des requêtes véri...
- Accélérer et optimiser WordPress et WooCommerce étape par étape Optimisez WordPress et WooCommerce étape par étape en vérifiant PHP, le cron, LiteSpeed Cache, les i...
Quelque chose cloche ou a changé ? Racontez-nous et nous le vérifions.