In-Memory OLTP 支援的資料類型

適用於:SQL ServerAzure SQL 資料庫Azure SQL 受控執行個體

本文章列出記憶體中 OLTP 功能不支援的資料類型︰

  • 記憶體最佳化的資料表
  • 原生編譯的 Transact-SQL (T-SQL) 模組

不支援的資料類型

不支援以下資料類型:

值得注意的支援資料類型

In-Memory OLTP 功能支援大部分的資料類型。 以下列表值得明確注意:

字串和二進位類型 取得詳細資訊
binaryvarbinary 二進位和可變型二進位
charvarchar char 和 varchar
ncharnvarchar nchar 和 nvarchar

針對上述字串和二進位資料類型,從 SQL Server 2016 (13.x) 開始:

  • 個別的記憶體最佳化資料表也可以有數個長資料行,例如nvarchar(4000),即使其長度總和超過 8,060 個位元組的實體列尺寸。

  • 記憶體最佳化資料表可以有最大長度字串和資料類型的二進位資料行,例如 varchar(max)。

識別 LOB 及其他 off-row 資料行

在 SQL Server 2016 (13.x) 和更新版本中,記憶體最佳化資料表支援 資料列外資料行,這允許單一資料表資料列大於 8,060 個位元組。 下列 Transact-SQL SELECT 陳述式會報告記憶體最佳化資料表中所有異於資料列的資料行:

  • 所有索引鍵資料行都會 in-row 儲存。
    • 非唯一索引鍵可以在記憶體最佳化資料表上包含可為 Null 的資料行。
    • 在記憶體最佳化資料表上可以宣告索引為 UNIQUE
  • 所有 LOB 資料行都會 off-row 儲存。
  • max_length-1 表示大型物件(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;

其他資料類型

其他類型 取得詳細資訊
表格 類型 使用記憶體優化來加快暫存資料表和資料表變數