Notice: Undefined offset: 0 in /home/wwwroot/prtgames.co.uk/wp-content/themes/qoxag/core/helpers/functions/template.php on line 55
Article
Optimiser les requêtes SQL pour des sites WordPress plus rapides
Optimiser les requêtes SQL pour des sites WordPress plus rapides
by
juin 1, 2022
Vous savez, un site Web rapide = = utilisateurs plus heureux, positionnement amélioré de Google et un taux de conversion plus élevé. Peut – être pensez – vous aussi que votre site WordPress est aussi rapide que possible: vous avez vu les performances de votre site, des meilleures pratiques de configuration de serveur à la résolution de problèmes de code lents et à la désinstallation d’images sur CDN, mais est – ce vrai? Pour les sites basés sur des bases de données dynamiques comme WordPress, vous pouvez encore faire face à un problème: les requêtes de base de données ralentissent votre site. Dans cet article, je vais vous montrer comment identifier les requêtes qui causent des goulets d’étranglement, comment comprendre leurs problèmes, et comment réparer rapidement et d’autres façons d’accélérer le temps d’exécution des requêtes SQL. Je vais utiliser un vrai problème que nous avons rencontré récemment qui ralentira la vitesse sur le portail client Delicious Brains. Format générique de nom de domaine.
Trouver des requêtes SQL lentes la première étape pour corriger les requêtes SQL lentes est de les trouver. Ashley a fait l’éloge sur son blog du plug – in de débogage Query Monitor, dont la fonctionnalité de requête de base de données en fait un outil précieux pour identifier les requêtes SQL lentes et améliorer les performances de la base de données. Le plug – in signale toutes les requêtes de base de données effectuées lors d’une demande de page. Vous permet de filtrer le Code d’appel ou le composant (plug – in WordPress, thème ou Core) et de mettre en évidence les requêtes répétées et lentes:
Si vous ne voulez pas installer le plug – in de débogage sur le site de production (vous pourriez vous inquiéter d’une surcharge de performance accrue), vous pouvez choisir d’activer MySQL slow Query log, qui enregistre toutes les requêtes qui nécessitent un certain temps d’exécution. Il est relativement facile de configurer et de définir l’emplacement des requêtes d’enregistrement. Comme il s’agit d’une modification au niveau du serveur, l’amélioration des performances sera inférieure au plug – in de débogage sur le site, mais devrait être désactivée dans les cas suivants:
Faites – le parce qu’il affiche le nombre de lignes que vous recherchez pour les résultats. Explain nous fournit également plus d’informations que nous pouvons utiliser pour l’optimisation. Par exemple, la table pm2 (WP _ posteta) nous dit que nous utilisons un filtre parce que nous avons besoin d’un ordre par clause sur l’instruction pour trier les résultats. Si nous groupons également les requêtes, nous ajouterons une surcharge à l’exécution.
L’utilisation du plan d’exécution MySQL Workbench pour les enquêtes visuelles est un autre outil gratuit utile pour de telles enquêtes. Pour les bases de données fonctionnant sur MySQL 5.6 et plus tard, les résultats d’interprétation peuvent être publiés lorsque json et MySQL Workbench convertissent json en un plan d’exécution d’instruction visuelle:
Les problèmes sont automatiquement portés à votre attention en colorant une partie de la requête en fonction du coût. Comme nous pouvons le voir immédiatement, l’adhésion à la licence wp \ u woocomberce \ u Software \ U (alias l) pose un grave problème. Faisons quelques optimisations de requête! La résolution de la requête SQL est lente et la Section d’optimisation de la requête effectue un balayage complet de la table, que vous devriez éviter autant que possible parce qu’elle utilise une colonne Order _ ID qui n’est pas indexée comme une connexion entre la table WP woocomberce Software licenses et la table WP posts. Il s’agit d’un problème courant avec les requêtes lentes et peut être facilement corrigé pour améliorer les performances des requêtes.
Index Order _ ID est un élément très important pour identifier les données dans la table. Si nous effectuons une requête de cette façon, nous devrions avoir un index sur la colonne, sinon MySQL scannera chaque ligne de la table ligne par ligne jusqu’à ce que les lignes nécessaires soient trouvées. Ajouter un index et voir sa fonctionnalité: créer un index sur la licence WP _ woocomberce Software ID (order ID)
Wow, en ajoutant un index, nous pouvons réduire le temps de requête de plus de 5 secondes, bon travail! Mais pourquoi s’arrêter ici?
Voici les résultats des propriétés statiques:
Classe WC _ Software Subscription {protected Static $subscriptions = array (); public static Function get user subscriptions ($user id) {if (problem (Static: $subscriptions [$User ID]) {return Static: $subscriptions [$User ID]); Wpdb global USD SQL = \