Snowflake数据缓存与数据库对象管理全解析
立即解锁
发布时间: 2025-09-03 01:58:35 阅读量: 9 订阅数: 26 AIGC 

### Snowflake数据缓存与数据库对象管理全解析
#### 1. Snowflake缓存机制
Snowflake存在两种重要的缓存机制,分别是元数据缓存和虚拟仓库本地磁盘缓存,下面为你详细介绍。
##### 1.1 元数据缓存
元数据缓存由全局服务层完全管理,用户可对元数据进行一定控制,但无法控制缓存。Snowflake会收集和管理关于表、微分区甚至聚类的元数据。对于表,Snowflake会存储行数、表大小(以字节为单位)、文件引用和表版本等信息。
例如,当执行`SELECT COUNT(*)`查询表时,由于计数统计信息存储在元数据缓存中,因此不需要运行虚拟仓库。Snowflake元数据存储库包含表定义以及该表的微分区文件引用。从微分区捕获的值范围(MIN和MAX)、NULL计数和不同值的数量会存储在Snowflake中。这使得一些查询无需运行虚拟仓库即可返回结果,如查询整数类型的邮政编码列的最小值时,就不需要虚拟计算云服务。此外,Snowflake还会存储微分区的总数和重叠微分区的深度,以提供聚类信息。元数据缓存中存储的信息用于构建查询执行计划。
##### 1.2 虚拟仓库本地磁盘缓存
传统的Snowflake数据缓存特定于用于处理查询的虚拟仓库。运行中的虚拟仓库使用SSD存储从集中式数据库存储层提取的微分区,以完成查询。虚拟仓库的SSD缓存大小由其计算资源大小决定。
虚拟仓库数据缓存大小有限,并使用LRU(最近最少使用)算法。当虚拟仓库收到查询时,会先扫描SSD缓存,再访问Snowflake远程磁盘存储。从SSD读取数据比从数据库存储层读取更快,但仍需运行虚拟仓库。
虽然虚拟仓库缓存实现在虚拟仓库层,每个虚拟仓库独立运行,但全局服务层通过查询优化器处理系统数据的整体新鲜度。查询优化器会检查分配的虚拟仓库每个数据段的新鲜度,然后构建查询计划,用远程磁盘存储的数据替换任何需要更新的数据段。
需要注意的是,虚拟仓库缓存有时也被称为原始数据缓存、SSD缓存或数据缓存。当虚拟仓库暂停时,该缓存将被删除。因此,需要权衡保持虚拟仓库运行所消耗的信用额度和维护先前查询数据缓存以提高性能的价值。默认情况下,Snowflake会在虚拟仓库闲置10分钟后自动暂停,但此设置可以更改。在可能的情况下,为访问相同数据进行查询的用户分配相同的虚拟仓库,这样可以增加他们从虚拟仓库本地磁盘缓存中受益的可能性。
以下是代码清理的操作步骤:
```sql
-- 在Chapter2工作表中,将缓存结果设置为TRUE
USE ROLE SYSADMIN;
ALTER SESSION SET USE_CACHED_RESULT=TRUE;
-- 删除虚拟仓库
USE ROLE SYSADMIN;
DROP WAREHOUSE CH2_WH;
DROP WAREHOUSE ACCOUNTING_WH;
```
#### 2. 创建和管理Snowflake可安全数据库对象
在Snowflake中,所有数据都存储在数据库表中,数据库表在逻辑上由行和列组成。下面将介绍如何创建和管理数据库及相关对象。
##### 2.1 准备工作
创建一个名为“Chapter3 Creating Database Objects”的新工作表。设置工作表上下文,确保使用SYSADMIN角色和COMPUTE_WH虚拟仓库。
##### 2.2 创建和管理Snowflake数据库
在关系型环境中,表和视图等数据库对象在数据库中维护。在Snowflake中,数据库对数据进行逻辑分组,而模式对数据进行组织,二者共同构成命名空间。在操作数据库对象时,通常需要指定命名空间,除非要使用的模式和数据库是工作区中的活动上下文。
可以创建两种主要类型的数据库:永久数据库和临时数据库。如果在创建数据库时未指定类型,默认将创建永久数据库。Snowflake通过连续数据保护(CDP)确保数据在整个生命周期内可访问和可恢复,CDP包含Time Travel和fail-safe等重要功能。
临时数据库的最大数据保留期(即Time Travel期)为一天,且没有fail-safe期。Snowflake的Time Travel期允许在历史时间点查询表数据,还能克隆或恢复已删除的数据库和数据
0
0
复制全文
相关推荐










