Optimisation des bases de données MS SQL Server : les requêtes
En théorie, quelle que soit la façon d'écrire une requête, le SGBDR doit être capable de trouver le moyen le plus efficace de traiter la demande, grâce à l'optimiseur. Mais parce qu'il y a loin de la théorie à la pratique, différentes écritures et différents styles de résolution, alliés à la qualité de l'indexation peuvent donner des temps d'exécution très variés.
C'est pourquoi la maîtrise de la conception de requêtes est un des points clefs de la performance d'une base de données bien conçue. Voyons quels en sont les principes basiques.
Dans un cours que je donne aux Arts & Métiers, je montre comment une bonne indexation alliée à la qualité de l'écriture des requêtes, peut faire varier dans une proportion de plus de 300 le temps d'exécution d'une requête. Je commence l'exercice par une demande simple : écrire une requête SQL permettant de répondre à une question basique, mais en prenant soin d'exprimer différentes solutions, même les plus bizarres.
Outre la solution simpliste, certains y arrivent par une union, d'autres avec des sous requêtes, d'autres encore avec des jeux de CASE... L'exécution brute de toutes ces solutions, donne un coût d'exécution allant du simple au triple. La pose d'un premier index trivial ne donne rien, par manque de sélectivité. Après élimination de cette première tentative, la pose d'un nouvel index montre que les requêtes les plus coûteuses au départ deviennent les plus rapides, alors que celles qui étaient les moins coûteuses à l'origine n'ont rien gagné. Un nouvel essai d'indexation remet toutes les requêtes au même rang qu'au départ, chacune gagnant dans la même proportion et plus que l'indexation précédente.
Enfin, la dernière tentative d'indexation étant la bonne, toutes les requêtes bénéficient d'un gain important, mais certaines bien plus que d'autres. Le clou est enfoncé lorsque l'on choisit de dénormaliser avec une vue. Là, le gain devient gigantesque. Il est voisin de 13 000. Mais il ne prend pas en compte l'effort supplémentaire à faire pour les mises à jour (INSERT, UPDATE, DELETE...).
Cet exercice nous apprend trois choses :
• différentes écritures d'une même requête ne donneront pas forcément les mêmes performances, bien que dans l’absolu, ce devrait être le cas [1]
• rien ne sert de poser un index s'il ne sert pas la requête
• une même requête écrite de différentes manières ne bénéficiera pas des mêmes gains lorsque l’on pose un index J’ajouterai que tout ceci évolue en fonction de la volumétrie des données et des données mêmes !
Tant est si bien qu’il est difficile de trouver de prime abord ce qu’est l’écriture d’une bonne requête. Affirmons cependant qu’une bonne requête est une requête qui sait tirer partie du moteur de requête pour le forcer à calculer un plan de requête dont les étapes sont les plus courtes à traiter.
[1] En fait, nous croyons souvent et naïvement que certaines écritures de requêtes sont identiques. Mais nous oublions souvent l’influence du marqueur NULL, dont le comportement particulier dans différents prédicats oblige le moteur SQL à des constructions parfois fort différentes.
Utilisation de Reporting Services dans un environnement Internet / Extranet
Il y a quelques mois, j’ai travaillé avec un client qui déployait une nouvelle version d’un portail Web de commerce électronique. L’application, utilisée principalement par les partenaires du client, expose les données de ventes et d’autres informations confidentielles. Le client souhaitait employer des applications sur Internet ou des extranet, cet article explique comment déployer d’abord un modèle d’authentification personnalisé pour Reporting Services, puis comment développer des rapports capables, au moment de l’exécution, de filtrer les données selon l’utilisateur qui consulte les rapports. Vous pouvez également vous servir de cette technique de filtrage avec le modèle de sécurité par défaut de Reporting Services.
Lire l'article
Actu SQL 24
ApexSQL vient de rendre disponible ApexSQL Enforce, son nouvel outil de standardisation pour les bases de données. Cette solution permet d’utiliser C# et Visual Basic .NET pour créer des règles de bases de données personnalisables. ApexSQL Enforce doit permettre aux DBA et développeurs de renforcer les standards de nommage et de codes, afin que les […]
Lire l'article
XML et SQL SERVER
Les informations échangées entre les différents systèmes, les différentes applications le sont de plus en plus auSQL Server, se sont adaptées. En effet, SQL Server à, entre autre, pour objectif de faciliter le travail avec les données. Pour cela, SQL Server dispose d'un ensemble d'instructions pour extraire des informations relationnelles au format XML ou bien l'opération inverse qui consiste à lire des données au format XML afin de stocker les informations dans une structure relationnelle classique.
Ces 2 étapes sont nécessaires et permettent de confier au moteur de base de données la plupart des transformations depuis ou vers le format XML à SQL Server. Mais SQL Server propose plus en offrant la possibilité de créer des colonnes de type XML. En intégrant directement les informations XML dans la structure relationnelle classique, SQL Server offre plus de souplesse en terme de stockage. Ce type XML est bien plus qu'un simple champ texte car SQL Server rend possible l'indexation des colonnes de type XML mais également la mise à jour, l'ajout et la suppression de données dans le document XML lui-même.
Ce sont ces trois fonctionnalités (extraire les informations au format XML, importer des données XML, stocker des données au format XML) de SQL Server qui sont exposées ci-dessous.
Un outil de reporting fort à propos
Depuis le lancement initial de .NET Framework 2.0.
Lire l'article
La sécurité de SQL Server 2005 en 10 étapes
Le produit SQL Server 2005 de Microsoft est un sécuriser les composants de l’infrastructure, notamment les serveurs de base de données. Cette stratégie met l’accent sur la protection de la périphérie, du réseau, des hôtes, des applications, des données et sur les défenses physiques. Le présent article expose 10 étapes à respecter avant, pendant et après l’installation de SQL Server 2005, afin de blinder votre infrastructure avec une défense en profondeur.
Prenez le contrôle de vos rapports avec ReportViewer
Visual Studio 2005 constitue la clé de voûte de toutes ces fonctionnalités. Il s’agit d’un outil souple, utilisable dans les Windows Forms et formulaires Web pour afficher deux types de rapports. Le premier type est un rapport côté serveur, qui nécessite un serveur de rapports SSRS.
Ce dernier fournit les valeurs des paramètres du rapport, crée les datasets et assure le rendu. Le contrôle ReportViewer affiche ensuite le rapport rendu dans une fenêtre d’application. Lorsque vous créez des rapports côté serveur, vous utilisez le mode de traitement distant. Le deuxième type est un rapport local. Ces rapports sont distribués en tant que partie intégrante d’une application et ne requièrent pas de serveur SSRS. Toutefois, le fait de s’affranchir du lien à un serveur de rapports a un coût. L’application doit fournir les valeurs pour les paramètres du rapport et créer tous les datasets. Le contrôle ReportViewer assure le rendu du rapport. Lorsque vous optez pour cette approche, vous utilisez le mode de traitement local.
Construisez vos propres systèmes de sécurité automatisés
Il était une époque où la sécurité des SQL Server n’aurait l’idée de donner le feu vert à une base de données sans contrôler au préalable ses vulnérabilités concernant la sécurité, par exemple la présence de mots de passe faibles ou de firewalls perméables. Mais comment savoir si vous avez vérifié tous les paramètres de sécurité essentiels ? Ainsi, si vous omettez de verrouiller vos dossiers d’installation ou de désactiver le compte Invité (Guest) de votre serveur, vous serez à la fête !
La réponse à la question ci-dessus consiste à élaborer un plan structuré de test de la sécurité, afin de contrôler différents paramètres de configuration requis par votre entreprise et de générer les rapports consignant les résultats des tests. Cet article présente, dans un premier temps, les aspects constitutifs d’une approche de test de la sécurité, puis fournit des exemples de code TSQL utilisables afin d’automatiser certaines parties de votre processus de test de la configuration et de génération des rapports correspondants. Mais commençons par le commencement.
Vue d’ensemble des informations de fragmentation SQL Server
L’article « Organisation des index dans SQL Server 2005 » présente les spécifications permettant d’appeler la nouvelle fonction TVF (Table-Valued Function) sys.dm_db_index_physical_stats() dans SQL Server utilise des listes de pages séparées (organisées en fonction du mode de stockage par SQL Server des données sur la page). Par ailleurs, la version 2005 introduit la possibilité de créer une table ou un index sur des partitions distinctes, chaque partition ayant sa propre liste de pages. Une liste de pages d’un type pour une partition est appelée unité d’allocation. SQL Server 2005 gère un maximum de trois unités d’allocation pour chaque table ou index de chaque partition. Ces trois unités d’allocation sont mappés avec trois types de pages gérés par SQL Server 2005 : IN_ROW_DATA (à savoir les lignes de données ou d’index classiques), LOB_DATA (à savoir, les données d’objets de grande taille, telles que text, ntext ou image) et ROW_ OVERFLOW_DATA (un nouveau type de stockage).
Lire l'article
ASP.NET 2.0 : Investissez dans les performances
Que vous soyez un développeur ASP.NET qui travaille sur des applications orientées données ou un DBA SQL Server gérant des applications ASP.NET, vous allez probablement découvrir que certaines possibilités d’ASP.NET 2.0 peuvent vous aider à « booster » les performances de votre site Web. Avec SQL Server afin d’invalider automatiquement les données mises en cache qui sont utilisées par le serveur Web.
Lire l'article
actu SQL Server sem 12
ScriptLogic annonce Security Explorer for SQL Server. Supportant à la fois SQL Server 2005 (y compris SQL Server 2005 Express Edition) et SQL Server 2000, la solution simplifie la sécurité des serveurs en fournissant un vue des permissions des bases de données. Par son biais, vous pourrez gérer mais aussi dupliquer, sauvegarder et restaurer les […]
Lire l'article
SQL 2008 : nouveaux types de données
SQL Server 2008 propose donc une gestion optimisée de ces éléments avec les types: goemetry, geography et filestream. Mais ce n'est pas la seule évolution proposée par SQL Server 2008 au niveau des données. En effet, SQL Server 2008 propose une gestion plus fine des données de type date et heure en proposant différents types de données. SQL Server 2008 offre également la possibilité de gérer correctement les données hiérarchiques par l'intermédiaire du type hierarchyid et les différentesméthodes associées.
Mais avant de commencer à présenter ces différents points, il est important, de souligner, que lorsque vous écrivez du code Transact SQL depuis SQL Server Management Studio (SSMS) le complément automatique du code est maintenant actif. L'avantage est double car il évite les erreurs de saisie et permet également d'écrire plus rapidement le code. Il n'y a maintenant plus de doute possible quant à l'orthographe exacte d'une variable ou bien le nom d'une méthode.
Modélisation des données avec SQL SERVER 2005
SQL Server 2005 introduit une pléthore de fonctionnalités et concepts : nouveaux outils de serveur, nouvelles constructions de langage T-SQL et même une interface entièrement redéfinie, SQL Server Management Studio, qui vient remplacer la console familière Enterprise Manager. L’interface d’analyse décisionnelle (BI) a été repensée, DTS laisse la place à SQL Server Integration Services (SSIS) et devient encore plus sûr.Vous n’avez plus besoin d’écrire de procédures stockées uniquement en T-SQL, grâce à l’intégration du CLR (Common Language Runtime), et le nouvel outil SQL Server Report Builder va faciliter votre travail de présentation des données. Pourtant, toutes ces nouveautés séduisantes (dont beaucoup ont été décrites dans d’autres articles de SQL Server Magazine ou dans d’autres ressources citées dans l’encadré Bibliographie) vont-elles changer fondamentalement le travail du modélisateur de données ? La réponse est non. En effet, malgré toutes ces nouvelles fonctions et fonctionnalités, quelque chose n’a pas changé : vous devez encore modéliser vos données avant de créer la base de données.
La modélisation des données est le processus consistant à capturer les règles métier, les réglementations et exigences (spécifications), puis à les convertir, une fois interprétées correctement, en un ensemble bien structuré de tables de base de données, relations et contraintes. Vous exprimez le modèle avec une série de représentations graphiques afin d’essayer de mieux comprendre les données et leur incidence sur les opérations organisationnelles. Ces représentations graphiques ne sont pas limitées à une plate-forme de base de données spécifique. Vous pouvez développer un modèle de données conceptuel, puis un modèle de données logique que vous mettrez en oeuvre sur n’importe quel SGBD, par exemple SQL Server, Oracle, IBM DB2 ou MySQL. Par conséquent, les mises à jour de versions dans un SGBD ne modifient en rien votre travail de compréhension des données, ni les exigences métier et la création des modèles de données.
actu SQL Server sem 16
Après le succès des Windows Server) pendant les sessions plénières. Les 900 vidéos sont divisées en cinq chaînes TV : L’accueil général, la chaîne des IT Pro, la chaîne des développeurs, la saga .NET et enfin la chaîne sur l’évènement Microsoft TechDays 2008.
Lire l'article
Astuces concernant les tables temporaires T-SQL
Les tables temporaires constituent une fonctionnalité T-SQL formidable. Elles permettent aux développeurs de stocker et de traiter des résultats intermédiaires au moyen des mêmes possibilités de sélection, de mise à jour et de jointure qu’avec les tables SQL Server classiques. Néanmoins, leur utilisation peut dégrader les performances du système. Voici un ensemble d’astuces qui vous aideront dans la gestion des tables temporaires employées par vos procédures T-SQL.
Lire l'article
5 étapes pour développer et déployer du code CLR dans SQL Server
Itzik Ben-Gan vous présente comment développer et déployer du code CLR dans SQL Server
Lire l'article
Actu semaine 11
Futur IT Software annonce EZ Manage SQL Enterprise Edition, produit de gestion pour SQL Server. Cette solution vous permet de gérer plusieurs serveurs depuis une seule console. Il permet aussi de hiérarchiser les problèmes de serveurs que vous pouvez rencontrer, plutôt que d’aborder chaque problème individuellement. Ce nouveau produit automatise aussi la défragmentation, la réindexation, […]
Lire l'article
CLR or not CLR telle est la question ?
L’intégration du CLR (Common Language Runtime) .NET dans SQL Server. Afin de faciliter le travail, je fournis le code .NET en C# et en VB.NET, et tous les exemples sont téléchargeables dans le Club Abonnés d'iTPro.fr.
Lire l'article
Deux outils pour une optimisation permanente de SQL Server
Depuis des années, le support technique de Microsoft (PSS) se sert de deux outils, OSTRESS et Read80Trace, afin de simuler des scénarios et d’analyser des fichiers de trace SQL Server pour le compte de ses clients. Au cours de l’édition 2004 de la conférence PASS (Professional Association for SQL Server), ces outils ont été dévoilés au public.Les DBA et développeurs SQL Server verront dans OSTRESS un outil appréciable pour la mise en oeuvre de scénarios de test de charge complexes et Read80Trace les aidera à analyser des fichiers de trace SQL Server afin de résoudre des problèmes de performances. Cet article propose quelques scénarios d’utilisation détaillés pour ces outils et fournit des indications afin de les mettre en oeuvre efficacement.
Les plus consultés sur iTPro.fr
- Les entreprises n’ont plus le luxe d’expérimenter l’IA
- Le changement, moteur d’engagement au travail
- Cloud 2026 : 5 tendances à anticiper pour les PME françaises
- Les DSI français face au défi de l’IA : ambitions élevées, marges de manœuvre limitées
Articles les + lus
L’essor de l’IA propulse les cyberattaques à des niveaux records
Face aux ransomwares, la résilience passe par les sauvegardes immuables
Les 6 tournants qui redéfinissent l’IA en entreprise
Infrastructures IT : 5 leviers concrets pour éviter les impasses technologiques
Une menace à 1 milliard d’euros : le gouffre de la fraude e-commerce en France
À la une de la chaîne Data
- L’essor de l’IA propulse les cyberattaques à des niveaux records
- Face aux ransomwares, la résilience passe par les sauvegardes immuables
- Les 6 tournants qui redéfinissent l’IA en entreprise
- Infrastructures IT : 5 leviers concrets pour éviter les impasses technologiques
- Une menace à 1 milliard d’euros : le gouffre de la fraude e-commerce en France
