Tipos de Dados com Suporte para o OLTP na Memória

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 do T-SQL compilados nativamente

Tipos de dados sem-suporte

Não há suporte para os seguintes tipos de dados:

geografia (Transact-SQL)

rowversion (Transact-SQL)

Tipos definidos pelo usuário

Tipos de Dados com Suporte Importantes

A maioria dos tipos de dados é suportada pelos recursos do OLTP na Memória. Vale a pena observar explicitamente o seguinte:

Tipos de cadeia de caracteres e binários Para obter mais informações
binary e varbinary* binary e varbinary (Transact-SQL)
char e varchar* char e varchar (Transact-SQL)
nchar e nvarchar* nchar e nvarchar (Transact-SQL)

Para os tipos de dados da cadeia de caracteres e binários anteriores, começando com o SQL Server 2016:

  • Uma tabela individual com otimização de memória também pode ter várias colunas longas, como nvarchar(4000), mesmo que seus tamanhos somem mais do que o tamanho físico da linha com 8.060 bytes.

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

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

Começando com o SQL Server 2016, as tabelas com otimização de memória dão suporte a colunas fora de linha, permitindo que uma única linha da tabela seja maior que 8060 bytes. A instrução SELECT do Transact-SQL a seguir relata todas as colunas que estão fora de linha em tabelas com otimização de memória. Observe que:

  • Todas as colunas de chave de índice são armazenadas em linha.
    • Chaves de índice não exclusivas agora podem incluir colunas que permitem valor nulo, 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.
  • Um max_length de -1 indica uma coluna LOB (objeto grande).
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;

Outros tipos de dados

Outros Tipos Para obter mais informações
tipos de tabela Variáveis de tabela com otimização de memória

Confira também

Suporte ao Transact-SQL para OLTP na memória
Implementando SQL_VARIANT em uma tabela com otimização de memória
Tamanho da tabela e de linha em tabelas com otimização de memória