混合表不支持的功能和限制

以下关于不支持的功能和限制的指南适用于混合表,可能会有更改。

不支持的功能

混合表不支持以下功能:

限制

云和区域

混合表仅在选定的公共 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_STATEMENTON_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 SCHEMAUNDROP DATABASE 命令可成功处理包含混合表的实体,但不能恢复这些混合表及其相关约束和索引。

  • TABLES 视图 中的 DELETED 列显示的删除时间是父实体的 UNDROP 时间。

  • ACCESS_HISTORY 视图 包含父实体 DROP/UNDROP 的条目,但没有混合表的条目。

持久化查询结果

根据 USE_CACHED_RESULT 参数 的定义,针对混合表的查询不使用结果缓存。请参阅 使用持久化查询结果

语言: 中文