En tant que développeur et DBA qui a souvent une technologie préférée, mais si nous dirigeons une grande organisation, nous devons être plus accommodants à toutes les technologies. Un de mes grands clients bancaires utilise plusieurs bases de données pour effectuer diverses transactions différentes. Ils utilisent également de nombreuses solutions de mise en cache différentes pour leur entreprise ainsi que du matériel haut de gamme. J'ai eu une conversation très intéressante avec mon client sur le sujet de la récupération des requêtes, et non du cache pour MySQL et SQL Server, nous avons discuté de SQL_NO_CACHE et OPTION (RECOMPILE). Nous en avons discuté lors de la vérification complète de l'état des performances de la base de données .
Voyons deux exemples différents aujourd'hui pour MySQL et SQL Server. Les deux bases de données relationnelles tirent parti du cache mémoire pour nous renvoyer les données. Voyons comment nous pouvons écrire une requête où nous n'utiliserons pas les résultats mis en cache mais obtiendrons directement nos données du disque SQL Server et non du cache.
Requête SQL Server – OPTION (RECOMPILE)
SELECT Columnname FROM TableName OPTION(RECOMPILE)
Requête MySQL SQL_NO_CACHE
SELECT SQL_NO_CACHE Columnname FROM TableName OPTION(RECOMPILE)
Lorsque vous utilisez SQL_NO_CACHE et OPTION (RECOMPILE), les bases de données relationnelles (MySQL et SQL Server respectivement) récupèrent directement les données du disque plutôt que ce qui est stocké dans le cache.
Voici quelques articles de blog pertinents sur le même sujet, qui pourraient vous intéresser.
- SQL SERVER – Répertorier le plan de requête, la taille du cache, le texte et le nombre d'exécutions
- SQL SERVER – Recherche du plan de requête le plus ancien à partir du cache
- SQL SERVER – Planifier le cache et le cache de données en mémoire
- SQL SERVER – Procédure stockée – Nettoyer le cache et nettoyer le tampon
- SQL SERVER – Supprimer tous les plans mis en cache des requêtes non utilisés pendant certaines périodes
- SQL SERVER - Script pour obtenir un plan compilé avec des paramètres à partir du cache
- SQL SERVER – Planifier le cache – Récupérer et supprimer – Un script simple
- SQL SERVER – 2017 – Script pour vider le cache de procédure au niveau de la base de données