Tipos de datos admitidos para OLTP en memoria
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance
En este artículo se enumeran los tipos de datos que no son compatibles para las características de OLTP en memoria de:
Tablas optimizadas para memoria
Módulos T-SQL compilados de manera nativa
Tipos de datos no admitidos
No se admiten los tipos de datos siguientes:
Tipos de datos admitidos importantes
La mayoría de los tipos de datos son compatibles con las características de OLTP en memoria. A continuación se indican solo algunos que conviene señalar explícitamente:
Tipos de cadena y binario | Para más información |
---|---|
binary y varbinary* | binary y varbinary (Transact-SQL) |
char y varchar* | char y varchar (Transact-SQL) |
nchar y nvarchar* | nchar y nvarchar (Transact-SQL) |
A partir de SQL Server 2016, cabe destacar lo siguiente en relación con los tipos de datos binarios y de cadena anteriores:
Cada tabla individual optimizada para memoria puede tener varias columnas long como
nvarchar(4000)
, aunque sus longitudes agregarían más que el tamaño de fila físico de 8060 bytes.Una tabla optimizada para memoria puede tener columnas de tipos de datos de cadena y binarias de longitud máxima, como
varchar(max)
.
Identificar las columnas de LOB y otras columnas no consecutivas
A partir de SQL Server 2016, las tablas optimizadas en memoria admiten las columnas de forma no consecutiva, lo que permite que una sola fila de tabla sea mayor que 8060 bytes. La siguiente instrucción Transact-SQL SELECT informa de todas las columnas que no son consecutivas en tablas optimizadas para memoria. Observe lo siguiente:
- Todas las columnas de clave de índice se almacenan en filas consecutivas.
- Las claves de índice no únicas ahora pueden incluir columnas que aceptan valores NULL en tablas optimizadas para memoria.
- Los índices se pueden declarar como UNIQUE en una tabla optimizada para memoria.
- Todas las columnas de LOB se almacenan en filas no consecutivas.
- Un valor en max_length de -1 indica una columna de objetos grandes (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;
Otros tipos de datos
Otros tipos | Para más información |
---|---|
Tipos de tabla | Variables de tabla con optimización para memoria |
Consulte también
Compatibilidad de Transact-SQL con OLTP en memoria
Implementar SQL_VARIANT en una tabla con optimización para memoria
Tamaño de tabla y fila de tabla optimizada para memoria