Types de données pris en charge pour In-Memory OLTP

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Cet article répertorie les types de données non pris en charge pour les fonctionnalités OLTP en mémoire des éléments suivants :

  • Tables optimisées en mémoire
  • Modules de Transact-SQL compilés en mode natif (T-SQL)

Types de données non pris en charge

Les types de données suivants ne sont pas pris en charge :

Types de données pris en charge notables

Les fonctionnalités In-Memory OLTP prennent en charge la plupart des types de données. La liste suivante vaut la peine de noter explicitement :

Types de chaînes et binaires Pour plus d’informations
binary et varbinary binaire et binaire variable
char et varchar char et varchar
nchar et nvarchar nchar et nvarchar

Pour les types de données chaîne et binaire précédents, à partir de SQL Server 2016 (13.x) :

  • Une table individuelle optimisée pour la mémoire peut également avoir plusieurs colonnes longues telles que nvarchar(4000), en dépit du fait que leurs longueurs ajoutent à plus que la taille physique de ligne de 8 060 octets.

  • Une table mémoire optimisée peut avoir une chaîne de longueur maximale et des colonnes binaires de types de données telles que varchar(max).

Identifier des objets LOB et d’autres colonnes qui sont hors ligne

Dans SQL Server 2016 (13.x) et versions ultérieures, les tables optimisées en mémoire prennent en charge les colonnes hors ligne, ce qui permet à une seule ligne de table d’être supérieure à 8 060 octets. L’instruction Transact-SQL SELECT suivante signale toutes les colonnes hors ligne pour les tables optimisées en mémoire :

  • Toutes les colonnes de clés d’index sont stockées dans la ligne.
    • Les clés d’index non uniques peuvent inclure des colonnes nullables sur des tables optimisées en mémoire.
    • Les index peuvent être déclarés comme UNIQUE sur une table optimisée en mémoire.
  • Toutes les colonnes LOB sont stockées hors ligne.
  • Un max_length de -1 indique une colonne d'objet volumineux (LOB).
SELECT OBJECT_NAME(m.object_id) AS [table],
       c.name AS [column],
       c.max_length
FROM sys.memory_optimized_tables_internal_attributes AS m
     INNER JOIN sys.columns AS c
         ON m.object_id = c.object_id
        AND m.minor_id = c.column_id
WHERE m.type = 5;

Autres types de données

Autres types Pour plus d’informations
types de tables Optimisation de mémoire pour accélérer les tables temporaires et les variables de table