La base de toute base de données relationnelle est constituée des requêtes SQL que vous composez. Avec eux, vous pouvez extraire des données et les fournir aux utilisateurs finaux à la volée.
Bien sûr, toutes les requêtes ne sont pas créées égales, et il est possible d'améliorer leurs performances grâce à des ajustements et des techniques. Voici quelques bonnes pratiques pour améliorer les performances des requêtes SQL.
Comment surveiller les performances de SQL Server
Avant de pouvoir entrer dans les détails de l'amélioration des performances des requêtes, vous devez avoir une vue d'ensemble de l'optimisation de votre base de données dans son ensemble.
Il existe de nombreuses solutions de surveillance différentes, y compris celles qui disposent d'un Outil de plan de requête SQL Server qui vous permet de catalyser des requêtes en particulier.
Toutes sortes de facteurs peuvent influencer les performances du serveur, et différents problèmes peuvent être à l'origine de défauts et d'inefficacités. Vérifier des choses comme les statistiques d'attente, ainsi que rechercher des blocages et des interblocages, vous sera très utile.
La raison d'utiliser des solutions de surveillance tierces est qu'elles peuvent automatiser les tâches istratives courantes. Ainsi, plutôt que d'avoir à éliminer manuellement les requêtes imparfaites, vous pouvez laisser le logiciel le faire pour vous, avec des alertes personnalisables pour encore plus de commodité.
Optimiser vos index
L'un des moyens les plus simples d'améliorer les performances des requêtes SQL consiste à vous assurer que vos index sont correctement optimisés. Cela implique de les défragmenter régulièrement afin qu'ils ne se désordonnent pas et puissent récupérer les bonnes informations de manière efficace.
La fragmentation des index fait partie intégrante du fonctionnement des bases de données SQL, ce n'est donc pas quelque chose que vous pouvez complètement empêcher. Cependant, il y a certaines choses à penser qui pourraient changer la façon dont vous utilisez les index en premier lieu.
Par exemple, dans le cas où une table contient une quantité relativement faible de données, un index peut être superflu et pourrait en fait nuire aux performances plutôt que de les améliorer.
Un autre aspect de l'optimisation des index qui est pertinent du point de vue des performances est le fait que lors de la reconstruction des index, vous devez savoir comment planifier ce processus.
Il n'est clairement pas judicieux de planifier que cela se produise lorsque la base de données est susceptible de subir une utilisation importante, alors planifiez plutôt vos tâches de maintenance d'index pour qu'elles aient lieu pendant les heures creuses.
Il existe de nombreuses autres stratégies à adopter lorsque vous travaillez sur votre indexation, mais maîtriser les bases de l'optimisation et de la maintenance de haut niveau fonctionnera en votre faveur à long terme.
Surveillance de SQL Server TempDB
TempDB ressemble beaucoup à l'indexation en ce sens qu'elle est l'une des pierres angulaires du fonctionnement de SQL Server, et sans elle, vous pourriez faire face à toutes sortes de complications en termes d'intégrité et de fiabilité des données.
Cependant, TempDB est loin d'être à l'abri des problèmes de performances des requêtes SQL. En bref, c'est l'endroit où les données transitoires sont stockées et sont donc utilisées par tous les processus actifs sur des instances de serveur entières.
Comme son nom l'indique, TempDB n'est censé stocker des informations que temporairement, avant de les supprimer lorsqu'elles ne sont plus nécessaires à un processus, application professionnelle, ou utilisateur.
De plus, même si vous avez plusieurs instances de serveur en cours d'exécution, toutes celles-ci partageront la même allocation TempDB, ce qui signifie qu'il s'agit d'un point de vulnérabilité majeur en termes de performances.
L'une des principales choses à surveiller lors de la surveillance de TempDB est la quantité d'espace de stockage qu'il utilise.
S'il se remplit parce que les transactions ne se sont pas terminées correctement ou que les données stockées temporairement n'ont pas été supprimées, alors tout un écosystème SQL peut s'arrêter brutalement.
L'utilisation d'outils de surveillance vous donnera bien sûr un aperçu du flux et du reflux de TempDB au fil du temps, et vous pouvez les utiliser pour identifier les problèmes et les éliminer dès que possible.
Surveillance des ressources système
En plus de garder un œil sur la façon dont les aspects du logiciel de base de données fonctionnent à chaque instant, il est également sage d'examiner la manière dont les ressources matérielles du serveur sont utilisées.
Cela peut réduire davantage les points douloureux potentiels lorsque vous dépannez les performances de requête lentes.
Par exemple, si certains processus monopolisent les threads du processeur, la mémoire, la bande ante du réseau ou la disponibilité des E/S, cela peut indiquer un problème plus large qui doit être résolu.
Parfois, cela peut être résolu rapidement en mettant simplement fin au processus problématique ou en redémarrant le serveur si nécessaire.
Parfois, une solution plus complète est nécessaire, et cela dépendra beaucoup des spécificités de la panne elle-même.
Une autre conclusion que vous pourriez tirer de la surveillance des ressources système est que les requêtes elles-mêmes ne sont pas mal optimisées et que les processus ne se comportent pas mal ; au lieu de cela, il se peut que le matériel de votre serveur ne soit plus adapté à l'usage prévu.
Surveiller les ressources du système ne consiste donc pas seulement à voir s'il y a de la place pour l'optimisation aujourd'hui, mais aussi à planifier à l'avance. Au fur et à mesure que votre base de données grandit et que le matériel est poussé plus loin, vous pouvez estimer quand des mises à niveau seront nécessaires et garder une longueur d'avance.
Optimisation des requêtes
Enfin et surtout, examinez les requêtes pour voir si le réglage améliorera les performances. Vous pouvez trouver des requêtes sous-optimales à l'aide de certaines des techniques et outils de surveillance mentionnés ci-dessus, puis corriger les imperfections en fonction de vos résultats.
Idéalement, vous serez suffisamment familiarisé avec SQL pour repérer les requêtes mal construites, mais il existe quelques stratégies simples à considérer. Par exemple, soyez précis avec les champs que vous utilisez en conjonction avec l'instruction SELECT, plutôt que de laisser la requête parcourir toute la table pour trouver ce dont vous avez besoin. Une requête plus longue sera plus rapide qu'une requête plus courte.
Conclusion
Les istrateurs de bases de données doivent toujours être vigilants quant aux performances des requêtes SQL qui ne sont pas conformes aux normes, et il est préférable de s'en tenir aux meilleures pratiques que de prendre des raccourcis.
En faisant les choses correctement la première fois, vous vous épargnerez beaucoup de tracas et de travail supplémentaire plus tard, c'est donc mieux pour toutes les personnes impliquées.