Database
 sql >> Base de données >  >> RDS >> Database

Options de réglage des performances d'Azure SQL Database

Azure SQL Database est l'offre de base de données en tant que service de Microsoft qui offre une flexibilité et une sécurité considérables et, dans le cadre de la plate-forme en tant que service de Microsoft, permet de tirer parti de fonctionnalités supplémentaires. Étant donné qu'Azure SQL Database est limité à la base de données, il existe de grandes différences en ce qui concerne le réglage des performances.

Réglage de l'instance

De nombreux éléments au niveau de l'instance que vous avez l'habitude de configurer sur des installations complètes sont hors limites. Certains de ces éléments incluent :

  • Réglage de la mémoire serveur min et max
  • Activation de l'optimisation pour les charges de travail ad hoc
  • Modification du seuil de coût pour le parallélisme
  • Modification du degré maximal de parallélisme au niveau de l'instance
  • Optimisation de tempdb avec plusieurs fichiers de données
  • Indicateurs de suivi

Ne soyez pas trop contrarié par certains d'entre eux. L'instruction ALTER DATABASE SCOPED CONFIGURATION autorise un certain nombre de paramètres de configuration au niveau de la base de données individuelle. Cela a été introduit avec Azure SQL Database et dans SQL Server à partir de SQL Server 2016. Certains de ces paramètres incluent :

  • Vider le cache des procédures
  • Réglage du MAXDOP sur une valeur autre que zéro
  • Définir le modèle d'estimation de la cardinalité de l'optimiseur de requêtes
  • Activer ou désactiver les correctifs d'optimisation des requêtes
  • Activer ou désactiver le reniflage des paramètres
  • Activer ou désactiver le cache d'identité
  • Activer ou désactiver un stub de plan compilé à stocker dans le cache lorsqu'un lot est compilé pour la première fois.
  • Activer ou désactiver la collecte de statistiques d'exécution pour les modules T-SQL compilés en mode natif.
  • Activez ou désactivez les options en ligne par défaut pour les instructions DDL qui prennent en charge la syntaxe ONLINE=ON/OFF.
  • Activer ou désactiver les options de reprise par défaut pour les instructions DDL prenant en charge la syntaxe RESUMABLE=ON/OFF.
  • Activer ou désactiver la fonctionnalité de suppression automatique des tables temporaires globales

Comme vous pouvez le voir dans la liste des configurations étendues, vous avez beaucoup de contrôle et de précision pour affiner les comportements spécifiques des bases de données individuelles. Pour certains clients, les limitations du contrôle au niveau de l'instance peuvent avoir un impact négatif, tandis que d'autres y verront un avantage.

Pour les entreprises qui ont une base de données par client, nécessitant une isolation complète, qui est intégrée à Azure SQL Database. Pour ceux qui ont besoin des capacités au niveau de l'instance de SQL Server mais qui souhaitent profiter de l'offre PaaS de Microsoft, il existe Azure SQL Managed Instance, qui est limité à l'instance. L'objectif est d'avoir une compatibilité de surface à 100 % avec SQL Server; ainsi, vous pouvez définir la mémoire serveur minimale et maximale, activer l'optimisation pour les charges de travail ad hoc et modifier à la fois MAXDOP et le seuil de coût pour le parallélisme. Tempdb sur une instance gérée contient déjà plusieurs fichiers, mais vous pouvez en ajouter d'autres et augmenter la taille par défaut. À bien des égards, cela ressemble vraiment à l'installation complète de SQL Server.

Optimisation des requêtes

Une autre différence entre Azure SQL Database et SQL Server est que le magasin de requêtes est activé par défaut dans Azure SQL Database. Vous pouvez désactiver le magasin de requêtes, mais vous limitez ensuite les outils de performances intelligentes du portail Azure qui l'utilisent. Query Store est une fonctionnalité qui fournit des informations sur les performances des requêtes et le choix du plan. Query Store capture également un historique des requêtes, des plans et des statistiques d'exécution afin que vous puissiez examiner ce qui se passe. Voulez-vous savoir quelle requête a le temps de recompilation, le temps d'exécution, le nombre d'exécutions, l'utilisation du processeur, l'utilisation de la mémoire, le plus grand nombre de lectures/écritures physiques, etc. ? Query Store dispose de ces informations. Pour SQL Server, vous devez activer cette fonctionnalité par base de données. Si vous êtes nouveau sur Query Store, ma collègue Erin Stellato a un cours de trois heures sur Pluralsight qui vous aidera à démarrer.

La catégorie des outils de performance intelligents comporte quatre fonctionnalités. Tout d'abord, la vue d'ensemble des performances fournit un résumé des performances globales de votre base de données en répertoriant les 5 principales requêtes par consommation de processeur, toutes les recommandations du réglage automatique, l'activité de réglage et les paramètres de réglage automatique actuels. Cette page de destination vous donne un aperçu rapide de vos performances.

Deuxièmement, l'option de recommandations de performances répertorie toutes les recommandations actuelles pour les créations d'index ou si des index doivent être supprimés. Si des actions récentes ont été effectuées, vous verrez également l'historique.

Troisièmement, Query Performance Insight est l'endroit où vous pouvez trouver un aperçu plus approfondi de votre consommation de ressources en affichant les 5 principales requêtes par CPU, E/S de données ou E/S de journal. Les 5 principales requêtes sont codées par couleur afin que vous puissiez voir rapidement le pourcentage de la consommation globale visuellement. Vous pouvez cliquer sur l'identifiant de la requête pour obtenir plus de détails, y compris le texte SQL. Il existe également un onglet de requêtes de longue durée. J'aime beaucoup le fait que Microsoft ait inclus gratuitement une fonctionnalité comme celle-ci dans le portail Azure. Il offre de la valeur en offrant aux clients un portail pour voir les principales requêtes incriminées. Ce que je trouve difficile ici, c'est d'avoir un moyen de voir une base de référence globale pour la comparaison d'un jour à l'autre, d'une semaine à l'autre et du mois précédent. Cependant, pour une analyse et une vue d'ensemble rapides, Query Performance Insight est utile.

La dernière caractéristique de cette catégorie est le réglage automatique. C'est ici que vous pouvez configurer le plan de force, créer un index et supprimer les paramètres d'index. Vous pouvez l'activer, le désactiver ou choisir d'hériter du serveur. Le plan de force permet à Azure de choisir ce qui, selon lui, serait le meilleur des plans d'exécution pour les requêtes en régression. Cette fonctionnalité existe également dans SQL Server 2017 Enterprise Edition en tant que correction de plan automatique. Certains administrateurs de base de données deviennent nerveux lorsqu'ils entendent parler des fonctionnalités de réglage automatique, car ils craignent que cela ne remplace le besoin d'administrateurs de base de données à l'avenir. J'aime toujours poser la question :"Combien de temps par jour passez-vous à régler les requêtes de manière proactive ?". La réponse écrasante est que les gens peuvent en fait passer très peu de temps à s'ajuster de manière proactive, et la plupart répondent que la seule fois où ils s'ajustent vraiment, c'est après la publication d'un code ou lorsque les utilisateurs commencent à se plaindre.

En plus des outils intégrés et de l'intérêt d'utiliser Query Store, les DMV sont également facilement disponibles. Glenn Berry dispose d'une collection complète de scripts uniquement pour Azure SQL Database que vous pouvez utiliser. Un DMV particulier que je veux appeler est sys.dm_os_wait_stats. Cela tirera du niveau du serveur, donc si vous voulez vraiment regarder les statistiques d'attente pour le niveau de la base de données, vous devrez utiliser sys.dm_db_wait_stats à la place.

Matériel – Mise à l'échelle

Un autre domaine à prendre en compte lors de l'examen des performances avec Azure SQL Database est le matériel sous-jacent. Azure SQL Database est tarifé par Database Transaction Units (DTU) et vCores. Les DTU sont une mesure mixte du CPU, de la mémoire et des E/S, et se déclinent en trois niveaux; Basique, Standard et Premium. Basic ne comprend que 5 DTU, Standard va de 10 à 3 000 DTU et Premium va de 125 à 4 000 DTU. Pour les niveaux basés sur vCore, nous avons des niveaux à usage général et critiques pour l'entreprise allant de 1 à 80 vCores.

Dans le modèle DTU, Basic doit être pris en compte pour le développement et les tests. Il n'a qu'une rétention de sauvegarde de 7 jours, donc je ne le considérerais pas comme viable pour les données de production. Standard est bon pour une demande de processeur faible, moyenne et élevée avec une demande d'E/S modérée à faible. Le niveau De base et Standard offre 2,5 IOPS par DTU avec 5 ms (lecture), 10 ms (écriture). Le niveau Premium est destiné à une demande CPU moyenne à élevée et à des E/S élevées offrant 48 IOPS par DTU avec 2 ms (lecture/écriture). Le niveau Premium a un stockage qui est des ordres de grandeur plus rapide que la norme. Dans le modèle vCore, vous avez des processeurs Gen4 qui offrent 7 Go de RAM par cœur physique et des processeurs Gen 5 qui offrent 5,1 Go de RAM par cœur logique. Du point de vue des E/S, General Purpose offre 500 IOPS par vCore avec un maximum de 7 000. Business Critical offre 5 000 IOPS par cœur avec un maximum de 200 000.

Résumé

Azure SQL Database est idéal pour les systèmes qui ont besoin d'une isolation de base de données, tandis qu'Azure SQL Managed Instance est idéal pour les environnements où vous avez besoin d'une compatibilité au niveau de l'instance (prise en charge des requêtes entre bases de données). Lorsque vous avez besoin d'ajuster Azure SQL Database, vous devez faire des choses au niveau de la base de données car les options au niveau de l'instance sont hors limites, donc les paramètres de configuration de l'étendue de la base de données sont vos options de réglage fin. Avec le dépannage des requêtes peu performantes, vous disposez d'outils intégrés qui vous aident, notamment le magasin de requêtes, et la plupart de vos scripts de réglage habituels fonctionneront. Vous constaterez peut-être que vous avez encore besoin de plus, comme des lignes de base, davantage de données historiques et la possibilité de créer des conditions consultatives pour vous aider à gérer vos charges de travail. C'est là que des solutions de surveillance puissantes telles que SentryOne DB Sentry peuvent vous aider.

Lorsque tout le reste échoue ou que votre charge de travail a tout simplement augmenté au-delà de vos ressources matérielles actuelles, passez à un niveau supérieur.