La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Optimisation SQL Server Alexis Comte. Plan Organisation physique Query optimizer Statistiques Procédures stoquées Indexed Views Covering index Index Intersection.

Présentations similaires


Présentation au sujet: "Optimisation SQL Server Alexis Comte. Plan Organisation physique Query optimizer Statistiques Procédures stoquées Indexed Views Covering index Index Intersection."— Transcription de la présentation:

1 Optimisation SQL Server Alexis Comte

2 Plan Organisation physique Query optimizer Statistiques Procédures stoquées Indexed Views Covering index Index Intersection

3 Organisation physique Objets organisés en pages de 8k. –Header de 96 octets contenant le type de page (donnée, index, log, ) taille libre dans la page id de lobjet propriétaire de la page pointers vers la page précédente et la page suivante de lobjet –La taille dune ligne ne peut donc pas dépasser 8k –Une page ne contient que des données dun objet Un extend est composé de 8 pages. –Extend mixte contient des pages de plusieurs objets –Extend uniforme : seulement un objet tous les objets dont la taille dépasse 8 pages sont placés dans des extends uniformes

4 Schéma dune page

5 Query optimiser Détermination du meilleur plan dexécution –Type dindex : Clustered (Index non dense, arbre B) –Clés primaires –Colonnes nayant pas beaucoup de mises à jour –Requêtes retournant une large plage de valeurs ( >, <, between) –Colonnes utilisés dans des opérations « Order by » ou « Group by » Non Clustered (Index dense, arbre B) –Colonnes ayant un grande sélectivité. –Requêtes ramenant un très faible nombre de données. –Algorithme de jointures Nested loop join (boucles imbriquées) Merge join (tri fusion) Hash join (Hachage )

6 Clustered index

7 Non clustered index

8 STATISTIQUES Calcule le degré de Sélectivité dune colonne. Création –Automatiquement lors de la création dun index ou pour toute colonne dans une clause where (AUTO_CREATE_STATISTICS) –Manuellement. Mises à jour –Automatiquement en fonction du volume de données mise à jour (AUTO_UPDATE_STATISTICS) –Manuellement. Méthode de calcul –Echantillonnage sur des pages (de la table ou de lindex) prises au hasard –FULLSCAN pour les tables dont la taille < 8 MB –Choix manuel La création manuelle de statistiques sur plusieurs colonnes peut aider le Query Analyser à choisir le meilleur plan. –Exemple : WHERE a = 7 and b = 9 Une stat sur (a,b) permet de connaître le nombre de couples (a,b) distincts

9 Procédures stockées Réduction du traffic réseau –Permet de placer plusieurs requêtes dans une même procédure Meilleures performances –Sauvegarde compilée : plus besoin de recalculer le plan dexécution –Mise en mémoire après la première exécution. Exemple –Création Create procedure GetTop5 as select top 5 productid, sum(unitprice*quantity*discount) as rebate from order_details group by productid order by rebate desc –Exécution GetTop5

10 Indexed views Vues pouvant utiliser des index (clustered ou secondaires). Stockage physique des résultats de la requête Mises à jour dès que les données sous jacentes sont mise à jour. Particulièrement intéressantes sur –les opérations dagrégation (sum, count,avg,…) –Résultats de jointures sur de larges tables. –Créer des vues sur des tables ordonnées différemment (différentes clé dindex cluster) A ne pas utiliser sur –Tables dont les données sont fréquemment mises à jour Peuvent permettre de très forts gains de performances

11 Indexed views Utilisation uniquement sur des requêtes ayant un fort coût estimé. Peut être choisie par lanalyseur de requête même si elle ny est pas référencé. NOEXPAND : Force lutilisation EXPAND VIEWS : Exclue lutilisation Un grand nombre de vues indexées peut ralentir le choix du meilleur plan dexécution.

12

13 select top 5 productid, sum(unitprice*quantity*discount) as rebate from order_details group by productid order by rebate desc create view vdiscount2 with schemabinding as select sum(unitprice*quantity*discount) as sumdiscountprice2, productid from dbo.order_details group by productid create unique clustered index cdiscountint on vdiscount2(productid)

14 Covering Index Cas spécial de Non clustered index Index contenant toutes les colonnes utilisées dans une requête Gain de performances car –Inutile daccéder aux pages de données de la table car tout est contenu dans les pages de lindex. –Les pages de lindex sont plus compactes que les pages de la table. –Les pages de lindex sont triées

15 select shipname from orders where shipcountry = 'France create index covering on orders (shipcountry, shipname)

16 Index intersection Le query optimiser peut utiliser plusieurs indexs dune table.


Télécharger ppt "Optimisation SQL Server Alexis Comte. Plan Organisation physique Query optimizer Statistiques Procédures stoquées Indexed Views Covering index Index Intersection."

Présentations similaires


Annonces Google