Je construit un site Web PHP pour une entreprise qui affiche des informations d'une base de données dans MySQL, mais il faut parfois environ 20 secondes pour charger ces informations et cela se produit au hasard. Lorsque vous travaillez correctement, il faut environ 0,005 secondes.
La base de données est dans un serveur virtuel local dans l'intranet de la société, mais j'y ai accès via Dyndns.info:port.
Lorsque vous ralentissez, si vous rechargez plusieurs fois, le site Web reste lent et soudainement lorsqu'il se charge rapidement, maintient le rechargement rapide, et ainsi de suite. P> Le code est lent dans la Exécution de l'instruction: P>
$statement = $conexion->prepare("SELECT table1.col1, table2.col2, table2.col3, table2.col4, table2.col5 FROM table1 LEFT JOIN table2 ON table1.col6 = table2.col6 LEFT JOIN table 3 ON table1.col1 = table3.col1 LIMIT 10 ");
$start_timer = microtime(true);
$statement->execute();
$piezas = $statement->fetchAll();
$end_timer = microtime(true);
4 Réponses :
Si elle est en train de charger, je dirais parfois que c'est à cause de la mise en cache, une table avec une tonne de lignes et un groupe de jointures exécuteront lentement, ma suggestion est en train de mettre en œuvre quelque chose comme Memcached ou Redis et cache grandes requêtes comme celle-ci. Cela aidera votre site Web à charger plus rapidement et vous pouvez contrôler le cache, mais vous avez besoin. P>
Index d'abord. Tuning du serveur Deuxièmement. Caching troisième.
Très probablement, le Query-cache Code> fait la querelle lente la plupart des temps, mais une requête indexée appropriée ne doit pas nécessairement être mise en cache avec cette petite quantité de données.
Assurez-vous d'avoir des index appropriés sur
table2 co6, col2,col3,col4,col5
Vous avez une requête lente? p>
Expliquez Expliquer sur la requête et analysez ceci. p>
Le problème était la requête, alors j'ai chargé une vue dans la base de données et l'a utilisé sur ma requête au lieu de la longue requête.
$statement = $conexion->prepare("SELECT * FROM view LIMIT 10");
Outre la performance, une base de données exposée au public (DYNDNS) est un risque de sécurité et doit être bien sécurisé. Toute raison que votre serveur Web ne fonctionne pas sur l'intranet et sert le site Web (doit être sécurisé également, mais est moins vulnérable)?
En fait, je me demandais ce qui pourrait être les risques possibles de créer un site Web de cette façon. La raison en est que j'ai encore peu de connaissances de tout. Merci pour votre commentaire, je vais chercher un meilleur moyen de vous connecter à ma base de données.