25

2 Analyse et Optimisation des Performances du moteur SQL Serveur 10 février 2011 Frédéric Pichaut EMEA SR ESCALATION ENGINEER Microsoft France

Embed Size (px)

Citation preview

Page 1: 2 Analyse et Optimisation des Performances du moteur SQL Serveur 10 février 2011 Frédéric Pichaut EMEA SR ESCALATION ENGINEER Microsoft France
Page 2: 2 Analyse et Optimisation des Performances du moteur SQL Serveur 10 février 2011 Frédéric Pichaut EMEA SR ESCALATION ENGINEER Microsoft France

2

Analyse et Optimisation des Performances du moteur SQL Serveur 10 février 2011Frédéric PichautEMEA SR ESCALATION ENGINEERMicrosoft France

Page 3: 2 Analyse et Optimisation des Performances du moteur SQL Serveur 10 février 2011 Frédéric Pichaut EMEA SR ESCALATION ENGINEER Microsoft France

3

Agenda

Quelques Bases Les indexes

StructuresUtilisationGestion

Les outilsAvec le produitExterieurs (SQLDiag, PSSDiag, SQL Nexus)

Page 4: 2 Analyse et Optimisation des Performances du moteur SQL Serveur 10 février 2011 Frédéric Pichaut EMEA SR ESCALATION ENGINEER Microsoft France

4

Quelques BasesL’optimiseur

Son rôle est de déterminer le chemin d’accès au donnéesIl est basé sur la notion de coût (Cost-Based Optimizer)Génération de plans d’exécutions

Les indexes sont propres à chaque optimiseurStructure sur disque associée à une table qui accélère l'extraction des lignes

Cluster Trie et stocke les lignes de données de la table en fonction de la clé.

Non-cluster Peuvent être définis sur une table dotée d'un indexe cluster ou nonChaque ligne contient la clé cluster ou un localisateur de ligne (RID)

Possibilité d’indexes sur des colonnes calculées par des fonctionsCHECKSUM, fonction utilisable pour des « hash indexes ».

Possibilité d’indexes sur des colonnes incluses2008 - Possibilité d’indexes filtrés:

CREATE NONCLUSTERED INDEX FIProdAcc ON Produit (Nom, Prix) WHERE CatID >= 27 AND CatID <= 36;

DENALI – Indexes de type “Column Store Index (CSI)”

Page 5: 2 Analyse et Optimisation des Performances du moteur SQL Serveur 10 février 2011 Frédéric Pichaut EMEA SR ESCALATION ENGINEER Microsoft France

5

Column Store Index (CSI)Accélération

Typiquement pour des requêtes de type Data WarehouseObjectifs: de 100x à 1000x plus rapideFonctionnement en parallèle

LimitationsPas d’Updates directe

Rebuild IndexPartition Switching

Pas de Large Data TypesLes types autres que String plus grand que 8 bytesNumériques avec une précision au-delà 18 digitsDatetimeoffset au-delà 8 bytesUnique IdentifierBLOBsXML

Column Values

12344

Value 1 2 3 4

Count 1 1 1 2

Verti-Pac Compression

Apollo

Page 6: 2 Analyse et Optimisation des Performances du moteur SQL Serveur 10 février 2011 Frédéric Pichaut EMEA SR ESCALATION ENGINEER Microsoft France

6

Les StatistiquesUtilisées par l'optimiseur pour évaluer la sélectivité des expressions, et donc la taille des résultats intermédiaires et finauxSur chaque indexes, elles peuvent être:

Crées automatiquement ou manuellementMises à jour automatiquement ou manuellementMises à jour en synchrone ou en asynchroneBasées sur un échantillonnage de valeurs ou toutes les valeurs

2008 - Elles peuvent être filtrées:CREATE STATISTICS FSPoids ON Produit (Poids) WHERE CatID IN (1,2,3);

Page 7: 2 Analyse et Optimisation des Performances du moteur SQL Serveur 10 février 2011 Frédéric Pichaut EMEA SR ESCALATION ENGINEER Microsoft France

7

DémoStatistiquesAuto-updateFiltrée

Column Store Index

Page 8: 2 Analyse et Optimisation des Performances du moteur SQL Serveur 10 février 2011 Frédéric Pichaut EMEA SR ESCALATION ENGINEER Microsoft France

8

Reconstruction d’indexe

Reconstruire un indexe le supprime et crée un nouveau (online ou offline).

ALTER INDEX … REBUILD; CREATE INDEX … DROP_EXISTING;

Désactiver Nc Indexes pour économiser l’espaceFOREIGN KEY référençant l’indexes seront désactivées

  ALTER INDEX REBUILD CREATE INDEX WITH DROP_EXISTINGAjour ou suppression de colonnes changement de l’ordre ou du tri

Non Oui

Options de l’indexe a positionner Oui OuiPlus d’un indexe à reconstruire en une transaction Oui Nonun indexe partitionné peut être repartitionné  Non Ouiun indexe peut être déplacé sur un autre fichier Non OuiDemande de l’espace temporaire supplémentaire Oui OuiReconstruire un indexe cluster reconstruit les indexes non cluster

Non (sauf si ALL) Non (sauf si ALL)

Single index partition à reconstruire Oui Non

Page 9: 2 Analyse et Optimisation des Performances du moteur SQL Serveur 10 février 2011 Frédéric Pichaut EMEA SR ESCALATION ENGINEER Microsoft France

9

Réorganisation d’indexe

ALTER INDEX … REORGANIZEToujours « Online »Réorganise les feuilles de l’indexe en ordonnant les pages (de gauche a droite)Les pages sont réorganisées en utilisant les pages existantes (pas d’allocation)Le réorganisation est faite par fichierCompacte les pagesUtilise un minimum de ressourceLes Blobs sont compactés par défaut quand un indexe Cluster est réorganisé

Page 10: 2 Analyse et Optimisation des Performances du moteur SQL Serveur 10 février 2011 Frédéric Pichaut EMEA SR ESCALATION ENGINEER Microsoft France

10

Quelles actions prendreUtiliser la fonction :

sys.dm_db_index_physical_stats()Regarder la valeur:

avg_fragmentation_in_percentSELECT a.index_id, name, avg_fragmentation_in_percentFROM sys.dm_db_index_physical_stats(DB_ID(), OBJECT_ID(N'Production.Product'), NULL, NULL, NULL) AS a JOIN sys.indexes AS b ON a.object_id = b.object_id AND a.index_id = b.index_id;

Ne pas s’attacher aux petits indexes (mixed extents).

avg_fragmentation_in_percent Action

> 5% et < = 30% ALTER INDEX REORGANIZE

> 30% ALTER INDEX REBUILD WITH (ONLINE = ON)

Page 11: 2 Analyse et Optimisation des Performances du moteur SQL Serveur 10 février 2011 Frédéric Pichaut EMEA SR ESCALATION ENGINEER Microsoft France

11

Méthodologie• L’analyse de performance est un perpétuel

recommencement• Quand on pense en avoir fini, un changement

survient

Capture

Analyse

Reglages

Charge du système

Page 12: 2 Analyse et Optimisation des Performances du moteur SQL Serveur 10 février 2011 Frédéric Pichaut EMEA SR ESCALATION ENGINEER Microsoft France

12

Quelques outilsServer Level Component Level

dm_exec_* Execution of user code and associated connections

dm_os_* Memory, locking & scheduling

dm_tran_* Transactions & isolation

dm_io_* I/O on network and disks

dm_db_* Databases and database objects

dm_repl_* Replication

dm_broker_* SQL Service Broker

dm_fts_* Full Text Search

dm_qn_* Query Notifications

dm_clr_* Common Language Runtime

Dynamic Management Views (DMVs)Plus de 70 Toujours disponible Des rapports prédéfiniPerformance Dashboard (web 2008)Performance Data Colector (2008)

SQL Profiler (SQL Trace)Capture des plans XML, visualisationCapture des deadlock, visualisationExport des events capturés+ d’event (OLEDB, Full Text, CLR, Broker, Query Notification, Security Audit,…)+ de colonnes capturéesCombiné avec Perfmon

Database Tuning Advisor (DTA) Successeur de l’Index Tuning WizardPlus robuste, moins de restrictionsPossibilité de Capacity Planing

PerfmonPlus de compteurs

Performance Data ColectorProfiler + Perfmon 

Page 13: 2 Analyse et Optimisation des Performances du moteur SQL Serveur 10 février 2011 Frédéric Pichaut EMEA SR ESCALATION ENGINEER Microsoft France

13

Outils à venir: XEProfiler

SQL TraceVa disparaitreEvents Ported – Engine Only

Intégré à Management Studio (SSMS)Create, Alter, Stop, Start SessionsPossibilité de voir les données sous forme de grilleFonctions avancées

SearchingAggregation (Sum, Min, Max, …)SortingGroupingCustom Columns (Ex: connect_options, sql_text = text)Save and Apply Your Favorite Display View

Export dans Excel

Page 14: 2 Analyse et Optimisation des Performances du moteur SQL Serveur 10 février 2011 Frédéric Pichaut EMEA SR ESCALATION ENGINEER Microsoft France

14

SQLDiag

Collecte basiqueUtile pour comparer les performances avant et après des changements (logiciels, code, indexes, hardware,…Livré avec SQL Server/X pour uniquement un snapshot: evt/err logs, configurationsSinon, collecte snapshot + PerfMon + ProfilerPeut être utilisé comme un service ou unitairementControlé par fichiers XML<EventlogCollector enabled="false" startup="false" shutdown="true" />

Page 15: 2 Analyse et Optimisation des Performances du moteur SQL Serveur 10 février 2011 Frédéric Pichaut EMEA SR ESCALATION ENGINEER Microsoft France

15

PSSDiag

S’appuie sur SQLDiag + Diagnostiques particuliersExemples: DMV, clone db, msdb backupContrôlé par les mêmes fichiers XML que SQLDiag, les Diagnostiques particuliers sont ajoutés comme:<CustomGroup name="msinfo" enabled="true" /> <CustomTask enabled="true" groupname="MsInfo" taskname="Get MSINFO32" type="Utility" point="Startup" wait="OnlyOnShutdown" cmd="start /B /WAIT MSInfo32.exe /computer %server% /report "%output_path%%server%_MSINFO32.TXT" /categories

Page 16: 2 Analyse et Optimisation des Performances du moteur SQL Serveur 10 février 2011 Frédéric Pichaut EMEA SR ESCALATION ENGINEER Microsoft France

16

DémoSQL Diag & PSSDiag

Page 17: 2 Analyse et Optimisation des Performances du moteur SQL Serveur 10 février 2011 Frédéric Pichaut EMEA SR ESCALATION ENGINEER Microsoft France

18

PSSDiag Best Practices I/O

Une capture à la fois.Eviter GUI, SQLDiag est non graphique (SQLTrace).Utiliser un ficher de sortie local avec un bon cache d’écriture, Pas de share sur le réseau.  KB307786Ne pas utiliser un path UNC, même s’il pointe en local.Utiliser le disque disponible le plus rapide pas utilisé par SQL (ou autre). Eviter RAID-5.  Tester sur un environnement autre que production ou pas pendant heures de production.

Page 18: 2 Analyse et Optimisation des Performances du moteur SQL Serveur 10 février 2011 Frédéric Pichaut EMEA SR ESCALATION ENGINEER Microsoft France

19

Best Practices – Capture

Eviter les évènements trop fréquents comme : Object:Opened, Lock:Acquired/Released, etc...Par défaut Batch-level, pas Statement-level.Show Plan Statistics consomme beaucoup de CPU, généralement capturer Showplan Statistics Profile et/ou Showplan XML Statistics Profile. Showplan All est utile dans le cas de requête ne se finissant pas.Les filtres réduisent la taille des fichiers et les I/O mais augmentent la consommation CPU. Filtrer sur des colonnes de type Integer (dbid, duration, etc) plutôt que sur des textes (database name, textdata, etc) et uniquement si les filtres enlèvent >10% des évènements.

Page 19: 2 Analyse et Optimisation des Performances du moteur SQL Serveur 10 février 2011 Frédéric Pichaut EMEA SR ESCALATION ENGINEER Microsoft France

20

Best Practices – Capture 2

Evènements qui impactent la taille de la trace:      SQL:StmtCompleted and SP:StmtCompleted       Degree of Parallelism       Lock:Timeout      Show Plan Statistics       SQL:BatchStarting       RPC:Starting  

Page 20: 2 Analyse et Optimisation des Performances du moteur SQL Serveur 10 février 2011 Frédéric Pichaut EMEA SR ESCALATION ENGINEER Microsoft France

21

SQL Nexus

Download depuis Codeplex.comImporter les traces SQLDiag + PerfStatsAnalyser vos donnéeConstruire ses propre rapport

Page 21: 2 Analyse et Optimisation des Performances du moteur SQL Serveur 10 février 2011 Frédéric Pichaut EMEA SR ESCALATION ENGINEER Microsoft France

22

DémoSQL Diag suite et analyse

Page 22: 2 Analyse et Optimisation des Performances du moteur SQL Serveur 10 février 2011 Frédéric Pichaut EMEA SR ESCALATION ENGINEER Microsoft France

23

PerfMon – Principaux compteurs 

Logical disk

Avg disk sec/read < 10-20ms, sec/write < 3-5ms

Disk reads/sec, Disk writes/sec

Memory - Available MBytes

MSSQL Buffer Manager - Page Life Expectancy

MSSQL Databases - Active Transactions, Backup/Restore Throughput/sec, Repl. Pending Xacts, Repl. Trans. Rate, Transactions/sec

MSSQL Memory Manager - Total Server Memory, Target Server Memory

MSSQL Plan Cache - Cache Hit Ratio (all instances)

MSSQL Wait Statistics - (all)

Process - % Processor Time (all instances)

Processor - % Processor Time (all instances)

Page 24: 2 Analyse et Optimisation des Performances du moteur SQL Serveur 10 février 2011 Frédéric Pichaut EMEA SR ESCALATION ENGINEER Microsoft France

25

MSDN et TechNet : l’essentiel des ressources techniques à portée de clic

http://technet.com http://msdn.com

Portail administration et infrastructure pour informaticiens

Portail de ressources technique pour développeurs

Page 25: 2 Analyse et Optimisation des Performances du moteur SQL Serveur 10 février 2011 Frédéric Pichaut EMEA SR ESCALATION ENGINEER Microsoft France