混合表不支持的功能和限制¶
以下关于不支持的功能和限制的指南适用于混合表,可能会有更改。
不支持的功能¶
混合表不支持以下功能:
限制¶
- 云和区域
混合表仅在选定的公共 Amazon Web Services (AWS) 区域的公开预览版中提供:
云区域
云区域 ID
US 西部(俄勒冈州)
us-west-2
US 东部(俄亥俄州)
us-east-2
US 东部(弗吉尼亚北部)
us-east-1
加拿大(中部)
ca-central-1
南美(圣保罗)
sa-east-1
欧洲(伦敦)
eu-west-2
EU(爱尔兰)
eu-west-1
EU(巴黎)
eu-west-3
EU(斯德哥尔摩)
eu-north-1
EU(法兰克福)
eu-central-1
亚太地区(东京)
ap-northeast-1
亚太地区(首尔)
ap-northeast-2
亚太地区(大阪)
ap-northeast-3
亚太地区(孟买)
ap-south-1
亚太地区(新加坡)
ap-southeast-1
亚太地区(悉尼)
ap-southeast-2
混合表在 Azure 或 Google Cloud Platform (GCP) 中不提供。
混合表在 SnowGov 区域中不提供。
混合表在试用账户中不提供。
如果您是 Virtual Private Snowflake (VPS) 客户,请联系 Snowflake 支持部门 (https://community.snowflake.com/s/article/How-To-Submit-a-Support-Case-in-Snowflake-Lodge),咨询为您的账户启用混合表的事宜。
- 群集密钥
混合表不支持群集密钥。有关更多信息,请参阅 群集密钥和聚类表。混合表中的数据按主键排序。
- 一致性
默认情况下,混合表使用基于会话的一致性模型,即会话中的读操作会返回同一会话中写操作的最新数据。在会话外进行的更改可能会有些过时(少于 100ms)。为避免过时,可在语句或会话级别设置
READ_LATEST_WRITES = true
。请注意,这可能会产生几毫秒的延迟开销。
- 约束
虽然混合表中强制执行主键、唯一键和外键约束,但也有以下限制:
约束只能在创建表时定义。
约束在行级别强制执行。
约束不在语句或事务级别强制执行(即延迟约束)。
不能更改列的唯一性。
以下额外限制适用于外键:
仅在属于同一数据库的混合表之间支持外键约束。
只要外键关系存在,就不能截断外键约束的引用表。
外键约束不支持部分匹配。
外键约束不支持可递延行为。
对于 DELETE 和UPDATE 操作,外键约束仅支持 RESTRICT 和 NO ACTION 行为。
- COPY
使用 COPY INTO 命令加载混合表时,
ABORT_STATEMENT
是ON_ERROR
唯一支持的选项。设置ON_ERROR=SKIP_FILE
会返回错误信息。有关更多信息,请参阅 加载数据。- 数据大小
您只能在账户中的混合表中存储 500GB 数据。更多信息,请参阅 配额和节流。
- DML 命令
使用 DML 命令更改少量行时,可使用 INSERT、UPDATE 或 DELETE 语句而不是 MERGE 来优化性能。
- 索引
虽然支持二级索引,但目前 不支持 以下索引功能:
将列添加到索引中。
在具有半结构化数据类型(ARRAY、OBJECT、VARIANT)的列上创建索引。
不能修改现有混合表上的索引。
要在混合表上使用二级索引,必须使用已获授表 SELECT 权限的角色。如果只能访问混合表本身以外的对象,就无法使用二级索引。
支持 TIMESTAMP 列。但是,目前不支持针对 TIMESTAMP 列的比较(例如 WHERE 谓词),这些列是基础表或索引中复合键的一部分,会导致错误。
- 加载数据
CREATE TABLE ...AS SELECT 命令建议用于将数据批量加载到混合表中。此命令经过性能优化,当加载数百万条记录时,其速度比其他命令快约 10 倍,例如 COPY 或 INSERT INTO ...SELECT。
有关更多信息,请参阅 加载数据。
- 原生应用程序
您可以在 Snowflake 原生应用程序中包含混合表。不过,混合表不能从提供商共享给使用者。原生应用程序可以在使用者账户中创建混合表,并且可以读取和写入这些混合表。还可以将混合表暴露给应用程序角色,这样使用者用户就可以直接查询这些表。
不能在提供商账户中创建混合表,也不能在通过原生应用程序共享的视图中包含该混合表。
- 定期更新密钥
如果 Snowflake 账户已启用使用 定期密钥更新,则不能使用 混合表。如果在账户中启用了定期密钥更新,并且希望使用混合表,则必须使用 ALTER ACCOUNT 命令将 PERIODIC_DATA_REKEYING 参数设置为
FALSE
。
- 配额和节流
您对混合表的使用受配额限制,以确保共享资源的公平可用性,保证服务质量的一致性,并减少使用高峰。默认情况下,这些配额在 Snowflake 账户上的账户级别执行,账户中的所有数据库共享此类配额。
配额
默认值
备注
混合存储
500GB
此配额可控制混合表中可存储的数据量。如果超过存储配额,向任何混合表添加数据的写入操作都会被暂时阻止,直到通过删除数据将混合存储使用量恢复到配额以下。
混合表请求
每秒约 1,000 次操作
此配额可控制读取和写入混合表的速度。在由 80% 的点读取和 20% 的点写入组成的平衡工作负载中,针对混合表的操作应该可以达到每秒 1,000 次。要监控节流,请参阅 AGGREGATE_QUERY_HISTORY 视图 中的示例。
如果收到错误或因配额限制而出现节流,请修改工作负载以保持在配额限制之下。如果工作负载需要更高的存储或吞吐量配额,请联系 Snowflake 支持部门 (https://community.snowflake.com/s/article/How-To-Submit-a-Support-Case-in-Snowflake-Lodge),讨论增加配额的可能性。对于已知具有一致容量需求的工作负载,可以隔离单个数据库并设置与 Snowflake 账户其他部分分开的配额分配。
- 复制
目前不支持混合表的 复制。
- 吞吐量
在 80%/20% 均衡读/写工作负载的情况下,每秒最多可对账户中的混合表执行约 1,000 次操作。如果超过此限制,Snowflake 可能会降低吞吐量。更多信息,请参阅 配额和节流。
- 事务
对于混合表,事务范围是混合表所在的数据库。事务中引用的所有混合表必须位于同一数据库中;同一事务中引用的标准 Snowflake 表可以位于不同的数据库中。
- Tri-Secret Secure
如果您的 Snowflake 账户已启用使用 Tri-Secret Secure,则不能使用 混合表。在使用混合表之前,请联系 Snowflake 支持部门 (https://community.snowflake.com/s/article/How-To-Submit-a-Support-Case-in-Snowflake-Lodge),验证您的 Snowflake 账户是否已启用 Tri-Secret Secure。
- UNDROP
混合表不支持 UNDROP。此外:
UNDROP SCHEMA 和 UNDROP DATABASE 命令可成功处理包含混合表的实体,但不能恢复这些混合表及其相关约束和索引。
TABLES 视图 中的 DELETED 列显示的删除时间是父实体的 UNDROP 时间。
ACCESS_HISTORY 视图 包含父实体 DROP/UNDROP 的条目,但没有混合表的条目。
- 持久化查询结果
根据 USE_CACHED_RESULT 参数 的定义,针对混合表的查询不使用结果缓存。请参阅 使用持久化查询结果。