Accès aux tables optimisées en mémoire à l’aide du Transact-SQL interprété
À quelques exceptions près, vous pouvez accéder à des tables optimisées en mémoire à l’aide d’une requête Transact-SQL ou d’une opération DML (SELECT, INSERT, UPDATE ou DELETE), de lots ad hoc et de modules SQL tels que des procédures stockées, des fonctions table-valeur, des déclencheurs et des vues.
Transact-SQL interprété fait référence aux lots Transact-SQL ou aux procédures stockées autres qu’une procédure stockée compilée en mode natif. L’accès Transact-SQL interprété aux tables à mémoire optimisée est appelé accès d’interopérabilité.
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é pour 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).
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.
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 d’une table à mémoire optimisée.
Domaine | 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 de bases de données croisées Transactions de bases de données croisées Serveurs liés |
Indicateurs de table
Pour plus d'informations sur les indicateurs de table, consultez. Indicateurs de table (Transact-SQL). L’isolation d’instantané a été ajoutée pour prendre en charge In-Memory OLTP.
Les indicateurs de tableau suivants ne sont pas pris en charge lors de l’accès à une table à mémoire optimisée à l’aide de Transact-SQL interprété.
HOLDLOCK | IGNORE_CONSTRAINTS | IGNORE_TRIGGERS | NOWAIT |
PAGLOCK | READCOMMITTED | READCOMMITTEDLOCK | READPAST |
READUNCOMMITTED | ROWLOCK | SPATIAL_WINDOW_MAX_CELLS = integer | TABLOCK |
TABLOCKXX | UPDLOCK | XLOCK |
Lorsque vous accédez à une table à mémoire optimisée à partir d’une transaction explicite ou implicite à l’aide de Transact-SQL interprété, vous devez inclure un indicateur de table de niveau d’isolation tel que SNAPSHOT, REPEATABLEREAD ou SERIALIZABLE, ou vous pouvez utiliser MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT. Pour plus d’informations, consultez Recommandations pour les niveaux d’isolation des transactions avec Memory-Optimized tables et options ALTER DATABASE SET (Transact-SQL).
Notes
Un indicateur de table de niveau d'isolation n'est pas obligatoire pour les tables mémoire optimisées 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