OLTP en mémoire (optimisation en mémoire)
Nouveauté de SQL Server 2014 (12.x), In-Memory OLTP peut améliorer considérablement les performances des applications de base de données OLTP. In-Memory OLTP est un moteur de base de données à mémoire optimisée intégré au moteur SQL Server, optimisé pour OLTP.
Voulez-vous essayer SQL Server 2016 ? Inscrivez-vous à Microsoft Azure, puis accédez ici pour lancer une machine virtuelle avec SQL Server 2016 déjà installée. Vous pouvez supprimer la machine virtuelle lorsque vous avez terminé. |
Pour utiliser In-Memory OLTP, vous définissez une table fortement sollicitée comme optimisée en mémoire. Les tables optimisées en mémoire sont entièrement transactionnelles, durables et sont accessibles à l’aide de Transact-SQL de la même façon que les tables sur disque. Une requête peut faire référence à des tables optimisées en mémoire et des tables sur disque. Une transaction peut mettre à jour des données dans des tables optimisées en mémoire et des tables sur disque. Les procédures stockées qui font référence uniquement aux tables optimisées en mémoire peuvent être compilées de façon native en code machine pour améliorer les performances. Le moteur OLTP In-Memory est conçu pour une concurrence de session extrêmement élevée pour les transactions de type OLTP pilotées à partir d’un niveau intermédiaire avec un scale-out élevé. Pour cela, il utilise des structures de données sans verrou et un contrôle d'accès concurrentiel optimiste et multiversion. Le résultat est une latence prévisible inférieure à une milliseconde et un débit élevé avec une mise à l'échelle linéaire pour les transactions de base de données. Le gain réel au niveau des performances dépend de plusieurs facteurs, mais une amélioration des performances de 5 à 20 fois est souvent obtenue.
Le tableau suivant récapitule les modèles de charge de travail qui peuvent bénéficier le plus en utilisant In-Memory OLTP :
Scénario d'implémentation | Scénario d'implémentation | Avantages de In-Memory OLTP |
---|---|---|
Taux d'insertion de données élevé à partir de plusieurs connexions simultanées. | Stockage append-only principal. Impossible de rester au niveau de la charge de travail d'insertion. |
Supprimer la contention. Réduire la journalisation. |
Performances de lecture et mise à l'échelle avec des insertions et des mises à jour par lot périodiques. | Opérations de lecture haute performance, surtout quand chaque demande du serveur effectue plusieurs opérations de lecture. Impossible de répondre aux besoins de mise à l'échelle. |
Supprimer la contention quand de nouvelles données arrivent. Diminuer la latence d'extraction des données. Réduire le temps d'exécution du code. |
Traitement de logique métier intensif sur le serveur de base de données. | Insérer, mettre à jour et supprimer la charge de travail. Calculs intensifs au sein des procédures stockées. Contention de lecture/écriture. |
Supprimer la contention. Réduire la durée d'exécution du code pour une latence et un débit améliorés. |
Faible latence. | Transactions d'entreprise à faible latence, ce que les solutions de base de données traditionnelles ne proposent pas. | Supprimer la contention. Réduire le temps d'exécution du code. Exécution du code à faible latence. Récupération efficace des données. |
Gestion de l'état de session. | Insertion, mise à jour et recherches de point fréquentes. Charge élevée de nombreux serveurs web sans état. |
Supprimer la contention. Récupération efficace des données. Réduction ou suppression des E/S facultative, lors de l'utilisation de tables non durables |
Pour plus d’informations sur les scénarios où In-Memory OLTP génère les gains de performances les plus importants, consultez OLTP en mémoire - Modèles de charge de travail courants et considérations relatives à la migration.
L'OLTP en mémoire améliorera davantage les performances dans l'OLTP avec des transactions à exécution courte.
Les modèles de programmation qui In-Memory OLTP seront améliorés incluent les scénarios d’accès concurrentiel, les recherches de points, les charges de travail où il existe de nombreuses insertions et mises à jour, ainsi que la logique métier dans les procédures stockées.
L’intégration à SQL Server signifie que vous pouvez avoir des tables optimisées en mémoire et des tables sur disque dans la même base de données, et interroger les deux types de tables.
Dans SQL Server 2014 (12.x), il existe des limitations dans la surface d’exposition Transact-SQL prises en charge pour In-Memory OLTP.
In-Memory OLTP obtient des gains de performances et d’extensibilité significatifs en utilisant :
Algorithmes qui sont optimisés pour accéder aux données résidantes en mémoire.
Contrôle d'accès concurrentiel optimiste qui élimine les verrous logiques.
Des objets sans verrou qui suppriment tous les verrous physiques (internes et externes). Les threads qui effectuent un travail transactionnel n’utilisent pas de verrous ou de verrous pour le contrôle d’accès concurrentiel.
Les procédures stockées compilées nativement, qui ont des performances supérieures aux procédures stockées interprétées, lors de l'accès à une table optimisée en mémoire.
Important
Certaines modifications de la syntaxe des tables et des procédures stockées sont nécessaires pour utiliser OLTP en mémoire. Pour plus d’informations, consultez Migration vers OLTP en mémoire. Avant de tenter de migrer une table sur disque vers une table optimisée en mémoire, lisez Déterminer si une table ou une procédure stockée doit être transférée vers In-Memory OLTP pour voir quelles tables et procédures stockées bénéficieront de In-Memory OLTP.
Contenu de cette section
Cette section fournit des informations sur les concepts suivants :
Rubrique | Description |
---|---|
Conditions requises pour l’utilisation des tables optimisées en mémoire | Décrit les configurations matérielle et logicielle requises et fournit des instructions pour l'utilisation des tables optimisées en mémoire. |
Utilisation de l’OLTP en mémoire dans un environnement de machine virtuelle | Décrit la procédure d'utilisation de l'OLTP en mémoire dans un environnement virtualisé. |
Exemples de code OLTP en mémoire | Contient des exemples de code qui montrent comment créer et utiliser une table optimisée en mémoire. |
Tables à mémoire optimisée | Présente les tables optimisées en mémoire. |
Variables de table optimisée en mémoire | L'exemple de code illustre comment utiliser une variable de table optimisée en mémoire plutôt qu'une variable de table traditionnelle pour réduire l'utilisation de tempdb. |
Index sur des tables optimisées en mémoire | Présente les index optimisés en mémoire. |
Procédures stockées compilées en mode natif | Présente les procédures stockées compilées en mode natif. |
Gestion de la mémoire pour l’OLTP en mémoire | Comprendre et gérer l'utilisation de la mémoire sur votre système. |
Création et gestion du stockage des objets à mémoire optimisée | Traite des fichiers de données et delta, qui stockent les informations sur les transactions dans les tables optimisées en mémoire. |
Sauvegarder, restaurer et récupérer des tables optimisées en mémoire | Décrit la sauvegarde, la restauration et la récupération des tables optimisées en mémoire. |
Prise en charge de Transact-SQL pour OLTP en mémoire | Décrit la prise en charge de Transact-SQL pour In-Memory OLTP. |
Prise en charge de la haute disponibilité pour les bases de données OLTP en mémoire | Traite des groupes de disponibilité et des clustering de basculement dans In-Memory OLTP. |
Prise en charge d'OLTP en mémoire par SQL Server | Répertorie les nouveautés et les mises à jour en matière de syntaxe et de fonctionnalités prenant en charge les tables optimisées en mémoire. |
Migration vers OLTP en mémoire | Explique comment migrer les tables sur disque vers des tables optimisées en mémoire. |
Des informations supplémentaires sur OLTP en mémoire sont disponibles dans :
OLTP en mémoire - Modèles de charge de travail courants et considérations relatives à la migration
Vue d'ensemble des mécanismes internes de l'OLTP en mémoire SQL Server