Dans le développement Web, PHP et MySQL sont deux outils extrêmement importants. PHP est un langage de script côté serveur populaire utilisé pour développer des sites Web et des applications dynamiques. MySQL est un système de gestion de base de données relationnel open source utilisé pour stocker et gérer les données. La combinaison de PHP et MySQL offre aux développeurs des fonctionnalités puissantes, mais fait également face à certains défis d'optimisation des performances. Cet article se concentrera sur les stratégies d'optimisation pour la lecture des données et le cache de requête pour les index PHP et MySQL, ainsi que sur leur impact sur les performances, et fournir aux lecteurs des exemples de code spécifiques.
L'index est une structure de données utilisée pour améliorer la vitesse de requête d'une base de données. Il localise et récupère rapidement les enregistrements en créant des références spécifiques. Dans MySQL, vous pouvez créer des index pour les colonnes d'une table pour accélérer les requêtes pour des colonnes spécifiques.
La création d'index appropriés est la clé pour améliorer les performances de la requête. Tout d'abord, assurez-vous que l'index correspond aux colonnes de la requête. Si l'index ne correspond pas aux colonnes de la requête, MySQL ne pourra pas utiliser l'index et devra scanner l'ensemble du tableau, ce qui entraîne une dégradation des performances.
Exemple de code:
<span class="fun">Créer index idx_name sur les utilisateurs (nom);</span>
Dans une instruction de requête avec plusieurs colonnes composées de conditions, vous pouvez créer un indice multi-colonnes contenant ces colonnes pour améliorer l'efficacité de la requête.
Exemple de code:
<span class="fun">Créer un index idx_city_country sur les utilisateurs (ville, pays);</span>
Bien que les index puissent améliorer les performances de la requête, trop d'index peuvent également conduire à une dégradation des performances. Parce que chaque fois que vous insérez, mettez à jour ou supprimez des données, vous devez mettre à jour l'index. Par conséquent, il doit être évité de créer des index sur des colonnes inutiles.
La mise en cache de requête est une technologie de mise en cache fournie par MySQL. Il peut mettre en cache les résultats des instructions de requête en mémoire pour éviter l'exécution répétée de la même instruction de requête. La mise en cache des requêtes peut augmenter considérablement la vitesse des requêtes, mais dans certains cas, cela peut également entraîner une dégradation des performances.
Afin d'utiliser la mise en cache de requête, assurez-vous d'abord que le paramètre Query_Cache_Type dans le fichier de configuration MySQL Server est défini sur 1, indiquant que la mise en cache de requête est activée.
Exemple de code:
<span class="fun">query_cache_type = 1</span>
Le taux de réussite du cache de requête indique la proportion d'obtention avec succès du résultat de la requête du cache. Si le taux de succès est faible, cela signifie que le cache de requête n'est pas entièrement fonctionnel et doit être optimisé.
Exemple de code:
<span class="fun">Afficher le statut comme «qcache_hits»;</span>
<span class="fun">Afficher le statut comme «qcache_inserts»;</span>
La taille du cache de requête est limitée. Lorsque l'espace de cache est plein, les résultats de la requête qui ne sont pas couramment utilisés récemment seront remplacés. Par conséquent, pour les tables de données fréquemment mises à jour, les caches de requête sont médiocres. Ce problème peut être résolu en créant des tables de données fréquemment mises à jour, pas d'utiliser le cache de requête.
Exemple de code:
<span class="fun">Sélectionnez SQL_NO_CACH * dans les utilisateurs où id = 1;</span>
En plus de l'optimisation de l'index et de l'utilisation du cache de requête, il existe d'autres meilleures pratiques d'optimisation des performances qui peuvent encore améliorer les performances de PHP et MySQL.
L'utilisation de l'insert par lots peut améliorer considérablement les performances lorsque de grandes quantités de données doivent être insérées. L'insertion par lots peut être implémentée en utilisant la clause VALEURS de l'insertion dans l'instruction.
Exemple de code:
<span class="fun">Insérer dans les utilisateurs (nom, âge) Valeurs («Tom», 20), («Jerry», 25), («Alice», 30);</span>
Les instructions de prétraitement peuvent réduire le nombre d'exécutions de la base de données, améliorant ainsi les performances. Utilisez des instructions de prétraitement pour envoyer l'instruction de requête au serveur de base de données avant d'effectuer la liaison et la requête des paramètres.
Exemple de code:
<span class="fun">$ stmt = $ mysqli-> préparer ('select * chez les utilisateurs où l'âge>?');</span>
<span class="fun">$ stmt-> bind_param ('i', $ age);</span>
<span class="fun">$ stmt-> execute ();</span>
La création et la fermeture des connexions de la base de données sont une opération longue et l'exécution répétée doit être évité autant que possible. La réutilisation des connexions de la base de données peut être optimisée en utilisant la technologie de mise en commun des connexions.
Exemple de code:
<span class="fun">$ mysqli = new mysqli («localhost», «nom d'utilisateur», «mot de passe», «base de données»);</span>
Cet article traite des stratégies d'optimisation pour la lecture des données et le cache de requête pour les index PHP et MySQL, et fournit des exemples de code spécifiques. Les performances de PHP et MySQL peuvent être considérablement améliorées en créant rationnellement des index, en permettant la mise en cache de requête et en suivant les meilleures pratiques d'optimisation des performances. Les lecteurs peuvent effectuer des opérations d'optimisation des performances en fonction de leurs propres besoins et conditions réelles, en combinaison avec les stratégies d'optimisation fournies dans cet article.