Partager via


Accès aux tables à mémoire optimisée à l’aide du Transact-SQL interprété

S’applique à : SQL Server Azure SQL Database Non pris en charge. Azure Synapse Analytics Non pris en charge. Analytics Platform System (PDW)

À quelques exceptions près, vous accédez aux tables mémoire optimisées à l'aide d'une requête Transact-SQL ou d'une opération DML (sélectionner, insérer, mettre à jour ou supprimer), de lots ad hoc et de modules SQL, tels que des procédures stockées, des fonctions table, des déclencheurs et des vues.

Transact-SQL interprété fait référence à des lots ou des procédures stockées Transact-SQL autres qu'une procédure stockée compilée en mode natif. L'accès par Transact-SQL interprété aux tables mémoire optimisées est appelé un accès d'interopérabilité.

À compter de SQL Server 2016 (13.x), les requêtes interprétées dans Transact-SQL peuvent analyser en parallèle des tables optimisées en mémoire, au lieu de les analyser en série.

Les tables mémoire optimisées sont également accessibles à l'aide d'une procédure stockée compilée en mode natif. Les procédures stockées compilées en mode natif sont recommandées pour les opérations OLTP critiques pour les performances.

L'accès à Transact-SQL interprété est recommandé dans les scénarios suivants :

  • Requêtes ad hoc et tâches d'administration.

  • Requêtes de rapports qui utilisent généralement des constructions non disponibles dans les procédures stockées compilées en mode natif (telles que les fonctions de fenêtre , parfois désignées sous le terme de fonctions OVER ).

  • Pour migrer des parties de votre application qui ont un impact sur les performances vers des tables mémoire optimisées, avec des modifications de code minimes (ou sans aucune modification du code). Potentiellement, vous constaterez de meilleures performances en migrant des tables. Si vous migrez ensuite des procédures stockées vers des procédures stockées compilées en mode natif, vous constaterez des améliorations de performances accrues.

  • Lorsqu'une instruction Transact-SQL n'est pas disponible pour les procédures stockées compilées en mode natif.

Cependant, les constructions Transact-SQL suivantes ne sont pas prises en charge dans les procédures stockées Transact-SQL interprétées qui accèdent aux données dans une table mémoire optimisée.

Zone Non pris en charge
Accès aux tables TRUNCATE TABLE

MERGE (table mémoire optimisée comme cible).

Curseurs DYNAMIC et KEYSET (dégradés automatiquement en STATIC).

Accédez aux modules CLR à l'aide de la connexion contextuelle.

Référencement d'une table mémoire optimisée à partir d'une vue indexée.
Bases de données croisées Requêtes entre plusieurs bases de données

Transactions entre bases de données

Serveurs liés

Indicateurs de table

Pour plus d'informations sur les indicateurs de table, consultez. Indicateurs de table (Transact-SQL). L'isolement SNAPSHOT a été ajouté pour prendre en charge l’OLTP en mémoire.

Les indicateurs de table suivants ne sont pas pris en charge lors de l'accès à une table de mémoire optimisée à l'aide du Transact-SQL interprété.

HOLDLOCK

PAGLOCK

READUNCOMMITTED

TABLOCKXX

IGNORE_CONSTRAINTS

READCOMMITTED

ROWLOCK

UPDLOCK

IGNORE_TRIGGERS

READCOMMITTEDLOCK

SPATIAL_WINDOW_MAX_CELLS = integer

XLOCK

NOWAIT

READPAST

TABLOCK

Lorsque vous accédez à une table optimisée en mémoire à partir d’une transaction explicite ou implicite à l’aide du Transact-SQL interprété, vous devez au moins effectuer l’une des opérations suivantes :

Un indicateur de table de niveau d’isolation n’est pas obligatoire pour les tables optimisées en mémoire accessibles par des requêtes qui s’exécutent en mode de validation automatique.

Voir aussi

Prise en charge de Transact-SQL pour OLTP en mémoire

Migration vers OLTP en mémoire