Upload
javan
View
29
Download
0
Embed Size (px)
DESCRIPTION
Analyse et Optimisation des Performances du moteur SQL Serveur. 10 février 2011 Frédéric Pichaut EMEA SR ESCALATION ENGINEER Microsoft France. Agenda. Quelques Bases Les indexes Structures Utilisation G estion Les outils Avec le produit Exterieurs ( SQLDiag , PSSDiag , SQL Nexus ). - PowerPoint PPT Presentation
Citation preview
2
Analyse et Optimisation des Performances du moteur SQL Serveur 10 février 2011Frédéric PichautEMEA SR ESCALATION ENGINEERMicrosoft France
3
Agenda
Quelques Bases Les indexes
StructuresUtilisationGestion
Les outilsAvec le produitExterieurs (SQLDiag, PSSDiag, SQL Nexus)
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)”
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
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);
7
DémoStatistiquesAuto-updateFiltrée
Column Store Index
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
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é
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)
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
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
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
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" />
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
16
DémoSQL Diag & PSSDiag
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.
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.
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
21
SQL Nexus
Download depuis Codeplex.comImporter les traces SQLDiag + PerfStatsAnalyser vos donnéeConstruire ses propre rapport
22
DémoSQL Diag suite et analyse
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)
24
Resources
Reorganizing and Rebuilding Indexes
Compilation par lots, recompilation et mise en cache des plans dans SQL Server 2005
Statistiques utilisées par l'optimiseur de requête dans Microsoft SQL Server 2005
Rechercher des problèmes de délai d'E/S dans le sous-système d'E/S disque
Optimisation des performances de la base de données tempdb
Et l’ultime recours
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