Compartilhar via


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

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instâ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