[SQL] – Practical SQL Serve Performance Troubleshooting

Cette première session a pour but de montrer comment optimiser une installation SQL Server. Elle se découpe en 4 parties :

  • Monitoring des performances
  • Configuration Hardware et OS
  • Optimisation des performances
  • Maintenance

Monitoring des performances

  • Présentation d’une méthode permettant d’analyser et de dépanner les problèmes.
  1. Identification du problème
  2. Résolution
  3. Mesure à nouveau des performances
  4. Répétition de l’approche si ce n’est toujours pas bon
  • Mise en place d’une « baseline », c’est-à-dire d’une stratégie d’identification des problèmes (notamment au travers des compteurs PerfMon). Pour cela, on peut utiliser l’outil PAL (téléchargeable sur codeplex) permettant d’analyser facilement les différents compteurs.
  • Utilisation des « Wait statistics » (vue sys.db_os_wait_stats) pour identifier les temps d’attente souvent source de problèmes sous SQL Server.
  • Première démonstration simulant l’activité sur un serveur SQL non optimisé  et analyse des « waits statistics ».

Hardware and OS Configuration

  • Présentation des différents outils de monitoring en fonction des différents niveaux de problèmes
  1. Hardware à Event log
  2. OS àEvent log et PerfMon
  3. Tables / Indexes à DMVs/PerfMon and SQL Profiler
  4. Requêtes (Execution Plan)
  • Présentation et « best practices » concernant la gestion des disques, en résumé :
  1. RAID 5 pour les « Database » files
  2. RAID 10 pour les « Log » files
  • Focus sur « Disk Partition Alignment » qui permet de limiter les E/S au niveau du disque. Cela peut grandement améliorer les performances sur SQL Server (configurer par défaut depuis windows 2008 server)
  • Enfin on insiste sur l’importance de tester les performances de stockage (MBs/Sec, IOPs, Latency, etc.).
  • Démonstration avec l’outil SQLIO permettant de tester les performances de stockage.

Optimisation des performances

– Analyse des principaux « Wait Types » (vue « sys.db_os_wait_stats »).

– « PAGEIOLATCH_IO » et « RESOURCE_SEMAPHORE » : s’il existe, cela veut dire qu’il y a un problème d’E/S au niveau des disques.

  • Démonstration et résolution du problème en ajoutant un index manquant àplus de problèmes de contention de disque.

– CXPACKET : problème de parallélisme lors l’exécution de requêtes ce qui se traduit par une forte utilisation des CPUs.

  • Démonstration et résolution du problème en ajoutant un index manquant àplus de problèmes de contention de disque.

– Présentation des différents niveaux d’isolations et recommandation sur le « Read Committed Snapshot Isolation » optimisation, dans certains cas, des performances.

– Discussion sur la « tempdb » et les problèmes de contention qui peuvent exister. Pour éviter cela, il est recommandé d’utiliser ½ « data files » par cœur.

– Présentation du « plan cache » permettant à SQL Server de ne pas enregistrer, à chaque fois, le plan d’exécution de toutes les requêtes et de pouvoir le réutiliser.

Maintenance

– Fragmentation des indexes. Les indexes sont fragmentés à chaque modification d’une table. Il est important d’analyser régulièrement nos indexes.

– Indexes trop fragmentés : commande REBUILD où REORGANIZE (en fonction du niveau de fragmentation).

– On peut également permettre à SQL Server de créer des statistiques afin de nous proposer une stratégie d’indexation.

En conclusion, une session très intéressante avec de nombreuses recommandations afin d’utiliser et d’optimiser nos serveurs SQL.

Julien

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s