Apr/080
MySQL Query Cache: l’importance de la constance
Chaque fois qu’une requête SELECT est envoyée au serveur, MySQL conserve la requête et le résultat dans une cache (MySQL Query Cache). Ainsi, si la même requête est redemandée, le serveur peut retourner le résultat sans physiquement exécuter la requête. Cette cache joue un rôle très important dans la performance de la base de données.
Cependant, la cache possède quelques petites lacunes. Pour que le résultat d’une requête soit retourné par la cache, la syntaxe des requêtes doit être TRÈS EXACTEMENT PAREIL (bytes pour bytes). Ceci inclus le upper et lower case.
Donc, ces 3 requêtes seront considérées différentes:
-
SELECT * FROM client WHERE prenom = 'Pat';
-
SELECT * FROM client WHERE prenom = "Pat";
-
SELECT * FROM client WHERE prenom = 'Pat';
Adopter un standard syntaxique devient un avantage qui joue un rôle dans l’optimisation de la base de données. Cependant, demeurer constant lorsque les requêtes sont écrites dans un code PHP (par exemple) n’est pas nécessairement facile car la syntaxe PHP utilisé pour formuler la requête peut influencer la requête elle-même.
-
$sql = 'SELECT Name, District
-
FROM city
-
WHERE Population > 30000
-
AND CountryCode != \'AFG\'
-
ORDER BY Name
-
LIMIT 10';
Il est déconseillé d’utiliser ce genre de syntaxe PHP car plusieurs espaces (ou TAB) s’insèrent à chaque lignes. Si la même requête doit être utilisée dans un autre script qui possède une indentation différente, il ne sera probablement pas possible d’utiliser celle en cache.
Utilisez plutôt une syntaxe PHP qui permet de conserver qu’un seul espace entre chaque instruction:
-
$sql = 'SELECT Name, District'.
-
' FROM city'.
-
' WHERE Population > 30000'.
-
' AND CountryCode != \'AFG\''.
-
' ORDER BY Name'.
-
' LIMIT 10';
Les requêtes créés avec la deuxième forme conservent toujours qu’un seul espace entre chaque instruction et demeure lisible peu importe l’indentation du code. Si toutes les requêtes sont créées avec cette notation, les chances qu’elles se trouvent déjà dans la Query Cache sont meilleures.
Enjoy this article?
No comments yet.
Leave a comment
No trackbacks yet.