Améliorations de l'évolutivité et des performances (moteur de base de données)

Les améliorations d'évolutivité et de performance dans le moteur de base de données incluent des index filtrés et des statistiques, de nouveaux indicateurs de table et de requête et de nouvelles fonctionnalités de performances et de traitement de requêtes.

Index et statistiques filtrés

Dans SQL Server 2008, vous pouvez utiliser un prédicat pour créer des index et des statistiques filtrés sur un sous-ensemble de lignes dans la table. Dans les versions antérieures de SQL Server, les index et statistiques étaient créés sur toutes les lignes dans la table. Les index et statistiques filtrés conviennent particulièrement aux requêtes qui sélectionnent à partir de sous-ensembles précis de données, telles que les colonnes avec principalement des valeurs Null, les colonnes avec des catégories de valeurs hétérogènes et les colonnes avec des plages de valeurs distinctes.

Un index filtré bien conçu peut améliorer les performances des requêtes, de même que réduire leurs coûts de maintenance et de stockage par rapport aux index de table entière. Pour plus d'informations, consultez Règles de conception d'index filtrés. Les statistiques filtrées peuvent améliorer la qualité de plan de requête car elles couvrent uniquement les lignes dans l'index filtré. Le moteur de base de données crée et gère automatiquement des statistiques filtrées pour les index filtrés. Vous pouvez également créer des statistiques filtrées sur une colonne non indexée afin d'améliorer la qualité de plan de requête pour des sous-ensembles des données qui ne nécessitent pas d'index filtré. Pour plus d'informations, consultez Utilisation des statistiques pour améliorer les performances des requêtes.

Indicateurs de requête et de table

L'option d'indicateur de requête OPTIMIZE FOR inclut la valeur variable UNKNOWN

L'option d'indicateur de requête OPTIMIZE FOR est améliorée avec la syntaxe UNKNOWN, qui spécifie que le moteur de base de données utilise des données statistiques pour déterminer les valeurs pour une ou plusieurs variables locales pendant l'optimisation de requête, au lieu des valeurs initiales. La syntaxe peut être spécifiée pour toutes les variables locales dans une requête, ou pour une ou plusieurs variables locales nommées. Pour plus d'informations, consultez Indicateurs de requête (Transact-SQL).

Indicateurs de requête

Les indicateurs de table peuvent maintenant être spécifiés comme indicateurs de requête pour fournir des options de réglage des performances de requêtes avancées. Nous recommandons d'utiliser un indicateur de table comme indicateur de requête uniquement dans le contexte d'un repère de plan. Pour plus d'informations, consultez Indicateurs de requête (Transact-SQL) et Utilisation des indicateurs de requête INDEX et FORCESEEK dans des repères de plan.

Indicateurs de table

L'indicateur de table FORCESEEK est ajouté pour fournir des options de réglage des performances de requêtes avancées. Il spécifie que l'optimiseur de requête doit utiliser uniquement une opération de recherche d'index comme chemin d'accès aux données dans la table ou la vue référencée dans la requête. Pour plus d'informations, consultez Utilisation de l'indicateur de table FORCESEEK.

Performances et traitement des requêtes

Option d'escalade de verrous

Une nouvelle option LOCK_ESCALATION de ALTER TABLE vous permet de désactiver l'escalade de verrous sur une table. Sur les tables partitionnées, vous pouvez faire en sorte que les verrous soient escaladés aux partitions plutôt qu'à la table entière. Cette option peut améliorer la concurrence en réduisant la contention de verrou lorsque vous utilisez des tables partitionnées. Pour plus d'informations, consultez ALTER TABLE (Transact-SQL).

Filtrage Bitmap optimisé

L'optimiseur de requête peut placer des filtres bitmap de manière dynamique dans des plans de requêtes parallèles afin d'améliorer les performances de requêtes contre un schéma en étoile. Le filtrage bitmap optimisé peut améliorer considérablement des performances de ces requêtes d'entrepôt de données qui utilisent des schémas en étoile, en supprimant les lignes non éligibles de la table de faits tôt dans le plan de requête. Pour plus d’informations, consultez Optimisation des performances des requêtes d'entrepôt de données grâce au filtrage Bitmap.

Traitement des requêtes parallèles sur des objets partitionnés

SQL Server 2008 améliore les performances du traitement des requêtes sur les tables partitionnées pour de nombreux plans parallèles, modifie la façon dont les plans parallèles et en série sont représentés, et améliore les informations de partitionnement fournies dans les plans d'exécution de compilation et au moment de l'exécution. SQL Server 2008 automatise et améliore la stratégie de partitionnement de thread pour les plans d'exécution de requête parallèles sur des objets partitionnés. Pour plus d'informations, consultez Améliorations du traitement des requêtes sur les tables et les index partitionnés.

Repères de plan

La procédure stockée sp_create_plan_guide a été étendue de façon à accepter directement la sortie du plan d'exécution XML dans le paramètre @hints au lieu d'incorporer la sortie dans l'indicateur USE PLAN. Cela simplifie le processus d'application d'un plan de requête fixe en tant qu'indicateur de repère de plan. De plus, une nouvelle procédure stockée, sp_create_plan_guide_from_handle, vous permet de créer un ou plusieurs repères de plan à partir d'un plan de requête dans le cache du plan.

Vous pouvez créer plusieurs repères de plan OBJECT ou SQL pour la même requête et le même lot ou module. Toutefois, un seul de ces repères de plan peut être activé à un moment donné.

La nouvelle fonction système sys.fn_validate_plan_guide peut être utilisée pour valider un repère de plan. Les repères de plan peuvent devenir non valides lorsque des modifications, telles que la suppression d'un index, sont apportées à la conception physique de la base de données. En validant un repère de plan, vous pouvez déterminer s'il peut être utilisé sans modification par l'optimiseur de requête.

De nouvelles classes d'événements, Plan Guide Successful et Plan Guide Unsuccessful, simplifient la vérification de l'utilisation des repères de plan par l'optimiseur de requête. Lorsque SQL Server ne peut pas produire de plan d'exécution pour une requête qui contient un repère de plan, la requête est compilée automatiquement sans utiliser le repère de plan. L'événement Plan Guide Unsuccessful se produit lorsque la compilation du repère de plan initiale échoue.

De nouveaux compteurs, Exécutions guidées du plan/s et Exécutions du plan non correctement guidées/s, dans l'Objet SQLServer:SQL Statistics, peuvent être utilisés pour surveiller le nombre d'exécutions de plan dans lesquelles le plan de requête a été généré avec succès ou sans succès en utilisant un repère de plan.

Des opérations telles que la création, la suppression, l'activation, la désactivation ou l'écriture de repères de plan peuvent être effectuées en utilisant SQL Server Management Studio. Les repères de plan apparaissent sous le dossier Programmabilité dans l'Explorateur d'objets.

Valeurs de hachage pour rechercher et paramétrer des requêtes semblables

Lorsque vous recherchez des requêtes gourmandes en ressources, vous devez considérer comment rechercher et paramétrer des requêtes semblables qui individuellement consomment des ressources système minimales, mais qui collectivement consomment des ressources système significatives. Les affichages catalogue sys.dm_exec_query_stats et sys.dm_exec_requests fournissent des valeurs de hachage de requête et des valeurs de hachage de plan de requête que vous pouvez utiliser pour mieux déterminer l'utilisation globale des ressources pour les requêtes semblables et les plans d'exécution de requêtes semblables. Pour plus d'informations, consultez Recherche et paramétrage de requêtes semblables à l'aide de requête et de hachages de plan de requête.