Tipos de dados com suporte para In-Memory OLTP

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do Azure

Este artigo lista os tipos de dados que não têm suporte para os recursos do OLTP na Memória:

  • Tabelas com otimização de memória
  • Módulos de Transact-SQL (T-SQL) compilados nativamente

Tipos de dados sem suporte

Os seguintes tipos de dados não têm suporte:

Tipos de dados com suporte notáveis

As funcionalidades In-Memory OLTP oferecem suporte à maioria dos tipos de dados. A lista a seguir vale a pena observar explicitamente:

Tipos de cadeia de caracteres e binários Para obter mais informações
binário e varbinary binário e varbinary
char e varchar char e varchar
nchar e nvarchar nchar e nvarchar

Para os tipos de dados binários e de cadeia de caracteres anteriores, começando com o SQL Server 2016 (13.x):

  • Uma tabela individual otimizada para memória também pode ter várias colunas longas, como nvarchar(4000), mesmo que seus comprimentos juntos excedam o tamanho físico da linha de 8.060 bytes.

  • Uma tabela com otimização de memória pode ter cadeia de caracteres de comprimento máximo e colunas binárias de tipos de dados, como varchar(max).

Identificar LOBs e outras colunas que estão fora de linha

No SQL Server 2016 (13.x) e versões posteriores, as tabelas com otimização de memória dão suporte a colunas off-row, que permitem que uma única linha de tabela seja maior que 8.060 bytes. A seguinte instrução Transact-SQL SELECT lista todas as colunas que estão fora da linha para tabelas otimizadas para memória:

  • Todas as colunas de chave de índice são armazenadas em linha.
    • As chaves de índice não específicas podem incluir colunas anuláveis em tabelas com otimização de memória.
    • Índices podem ser declarados como UNIQUE em uma tabela com otimização de memória.
  • Todas as colunas LOB são armazenadas fora de linha.
  • Uma max_length de -1 indica uma coluna de objeto grande (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;

Outros tipos de dados

Outros tipos Para obter mais informações
tipos de tabela Tabelas temporárias e variáveis de tabela mais rápidas usando otimização com memória