内存中 OLTP 支持的数据类型
适用于: SQL Server Azure SQL 数据库 Azure SQL 托管实例
本文列出了内存中 OLTP 功能不支持的数据类型:
内存优化表
本机编译的 T-SQL 模块
不支持的数据类型
不支持以下数据类型:
值得注意的受支持数据类型
内存中 OLTP 的功能支持大多数数据类型。 以下几个数据类型值得注意:
字符串和二进制类型 | 详细信息 |
---|---|
binary 和 varbinary* | binary 和 varbinary (Transact-SQL) |
char 和 varchar* | char 和 varchar (Transact-SQL) |
nchar 和 nvarchar* | nchar 和 nvarchar (Transact-SQL) |
对于上述字符串和二进制数据类型,从 SQL Server 2016 开始:
单个内存优化表还可以具有多个长列(如
nvarchar(4000)
),即使其长度之和大于物理行大小(即 8060 字节)也没有关系。内存优化表可以具有数据类型的最长字符串和二进制列,例如
varchar(max)
。
标识 LOB 和其他行外列
自 SQL Server 2016 起,内存优化表支持行外列,即允许一个表行大于 8060 个字节。 以下 Transact-SQL SELECT 语句报告了内存优化表中的所有行外列。 请注意:
- 所有索引键列均存储于行内。
- 现在,允许在内存优化表上的非唯一索引键中包含可为 NULL 的列。
- 可以在内存优化表上将索引声明为 UNIQUE。
- 所有 LOB 列存储在行外。
- -1 的 max_length 表示大型对象 (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;
其他数据类型
其他类型 | 详细信息 |
---|---|
表类型 | 内存优化表变量 |
另请参阅
对内存中 OLTP 的 Transact-SQL 支持
在内存优化的表中实现 SQL_VARIANT
内存优化表中的表和行大小
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈