Snowflake Cloud 数据仓库 - 数据库最佳实践限制

Snowflake Cloud data warehouse - Database best practice limitations

在一个 Snowflake 数据库中可以拥有多少模式和安全对象是否有限制?如果有数千个这些对象,性能会下降吗?

将数据拆分到多个数据库中是否有助于提高性能?

我的知识没有硬性限制。我们的经验是,当您拥有数以千计的安全对象(用户、角色、模式)时,会出现严重的性能问题。我们有几个关于此的支持案例。到目前为止,我们已经能够找出影响性能的一些要点:

  • 当安全对象变化很大时,性能问题会更严重。如果安全对象不经常更改,则有某种缓存可以提供很大帮助。
  • 当安全图复杂时,性能问题会更严重。 users/roles 的绝对数量不如它们之间的关系重要(例如,用户 A 授予了 1000 个角色,每个角色都授予了 100 个其他角色)
  • 使用多个数据库没有效果(除了上一点)。
  • 扩展仓库的效果有限,因为您可以通过更快地执行 DQL/DML 查询来抵消 DCL/DDL 查询中的 "lag"。
  • 云安全功能的性能差异很大 - 您可以在几天内对一个数据库的一个查询平均花费 200 毫秒,然后突然增加到平均 500 毫秒并保持几天天。

有趣的是,支持人员经常告诉我们,我们是唯一遇到此类问题的客户。