Types de données pris en charge pour l’OLTP en mémoire

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 T-SQL compilés en mode natif

Types de données non pris en charge

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

geography (Transact-SQL)

rowversion (Transact-SQL)

Types définis par l'utilisateur

Types de données remarquables pris en charge

La plupart des types de données sont pris en charge par les fonctionnalités de l’OLTP en mémoire. Les quelques éléments suivants sont particulièrement intéressants :

Types binaires et de chaîne Informations supplémentaires
binary et varbinary* binary et varbinary (Transact-SQL)
char et varchar* char et varchar (Transact-SQL)
nchar et nvarchar* nchar et nvarchar (Transact-SQL)

Pour les types de données de chaîne et binaires précédents, à partir de SQL Server 2016 :

  • Une table optimisée en mémoire individuelle peut également présenter plusieurs colonnes longues, telles que nvarchar(4000), dont la longueur peut même dépasser la taille physique des lignes de 8 060 octets.

  • Une table optimisée en mémoire peut afficher des colonnes de type chaîne et binaire de longueur maximale pour les types de données tels que varchar(max).

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

À compter de SQL Server 2016, les tables optimisées en mémoire prennent en charge les colonnes hors ligne, ce qui permet à une ligne de table unique de dépasser 8 060 octets. L’instruction Transact-SQL SELECT suivante signale toutes les colonnes qui sont hors ligne pour des tables optimisées en mémoire. Notez les points suivants :

  • Toutes les colonnes de clés d’index sont stockées dans la ligne.
    • Les clés d’index non unique peuvent maintenant inclure des colonnes autorisant les valeurs Null sur des tables optimisées en mémoire.
    • Les index peuvent être déclarés comme uniques sur une table optimisée en mémoire.
  • Toutes les colonnes LOB sont stockées hors ligne.
  • Une valeur max_length égale à -1 indique une colonne 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
        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 Informations supplémentaires
types de tables Variables de table optimisée en mémoire

Voir aussi

Prise en charge de Transact-SQL pour OLTP en mémoire
Implémentation de SQL_VARIANT dans un tableau mémoire optimisé
Taille de la table et des lignes dans une table à mémoire optimisée