全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

冷热数据分层

最近更新时间:2023-10-08 11:11:35

为降低海量数据存储成本,金山云ClickHouse提供了冷热数据分层存储功能。用户可以将热数据存放在EBS云盘中,冷数据存放至对象存储KS3中,在满足数据查询性能的基础上,有效降低数据存储成本。

术语说明

1. 热数据: 访问频次较高和创建时间较新的数据,存储在热数据盘(即EBS云盘)中,满足高性能访问的需求。

2. 冷数据: 访问频次较低和创建时间较久的数据,存储在较低价的冷数据盘(即对象存储KS3)中,满足降低存储成本的需求。

3. 冷热数据分层存储提供了三种数据移动方式, 具体如下:

  • 默认存储策略: 将新写入的数据存储在热数据盘中,提供高效查询。当热数据存储量达到业务设置阈值时,自动按照时间先后顺序将热数据盘的数据移动到冷数据盘中,从而释放热数据盘存储空间。

  • TTL分层存储策略: 在默认存储策略基础上,添加TTL语句,实现将间隔时间之前的所有数据自动移动到冷数据盘中。

  • 手动方式将数据在冷、热数据盘之间移动。

注意事项

  • 冷热数据分层存储功能开通时,集群会进行重启,重启期间只能查看集群信息,无法进行升配、扩容、修改参数配置等操作。
  • 使用冷热数据分层存储功能时,必须在建表语句中添加SETTINGS storage_policy = ‘hot_to_cold’;语句指定存储策略。存储策略一旦指定,后期无法更改。
  • 冷热数据分层存储功能开通后,暂不支持关闭。

计费说明

  1. 计费规则如下:
  • 热数据盘: 购买集群时所选EBS云盘的存储空间。
  • 冷数据盘: 采用按量付费模式。无需提前购买的存储空间,先使用,后付费,并按照实际使用的存储空间每小时计费一次。
  1. 冷数据盘单价,详见产品规格及计费说明

  2. 计费公式: 冷存储空间费用=冷数据存储单价×冷数据存储使用量×使用时长。

  3. 示例: 国内冷数据盘单价为0.0002元/GB/小时。实例开启冷热数据分层功能后,在10:00-11:00使用了2000GB冷数据盘空间,则总费用为:0.0002×2000×1=0.4元。在11:00-12:00释放了1000GB冷数据盘空间,实际使用了1000GB冷数据盘空间,那么20:00-21:00的总费用为:0.0002×1000×1=0.2元。

操作步骤

  1. 登录云数据仓库ClickHouse控制台

  2. 在实例详情页面中点击开启冷热数据分层,弹出冷热存储分层配置信息弹出框,参数配置如下。如下图:
    hottocold.png

  3. 在冷热数据分层配置窗口进行配置,点击确定,即可开启冷热数据分层服务。参数配置如下:

参数 说明
分层策略 当热数据盘中的已用存储空间所占比大于该参数时,将按照时间先后将数据迁移到冷数据盘。取值范围为[5,100]的整数,且为5的倍数。默认值为90%,代表已用存储空间所占比例大于90%时,将自动进行数据移动。
冷数据合并 冷数据盘中的数据是否进行合并。选项为:合并,默认值;不合并。

hottocold3.png
4. 在实例详情页面中可以查看冷热数据分层信息
hottocold4.png
5. 点击修改,可修改“分层策略”和“冷数据合并”,点击保存,完成修改。
hottocold5.png

设置TTL分层存储策略

在默认存储策略的基础上,添加TTL语句,实现将间隔时间之前的所有数据自动转移到冷数据盘中,语法如下:

TTL <time_column> + INTERVAL <number> TO DISK 'ks3'

参数说明如下:

参数 说明
time_column 日期或日期时间类型的列。
number 间隔时间。单位有:Day、Week、Month、Year。

示例
以d1列为依据,将30天之前的所有数据移动到冷数据盘。建表语句如下。

CREATE TABLE ttl_t1 ON CLUSTER default_cluster 
(
    s1  String,
    s2 String, 
    i1 Int64,
    f1 Float64,  
    d1 Date
)
ENGINE = MergeTree() 
PARTITION BY d1 
ORDER BY i1 
TTL d1 + INTERVAL 30 DAY TO DISK 'ks3' 
SETTINGS storage_policy = 'hot_to_cold';

更改TTL分层存储策略

您可以更改TTL分层存储策略的日期或日期时间类型的列以及间隔时间,语法如下:

ALTER TABLE <table_name> ON CLUSTER default_cluster MODIFY TTL <time_column> + INTERVAL <number> TO DISK 'ks3';

参数说明如下:

参数 说明
table_name 表名。
time_column 更改后的日期或日期时间类型的列。
number 更改后的间隔时间。单位有:Day、Week、Month、Year。

查看冷热数据盘上的数据

  • 查看热数据盘上的数据。
SELECT * FROM system.parts WHERE database = '<db_name>' AND table = '<tbl_name>' AND disk_name ='default' AND active = 1;
  • 查看冷数据盘上的数据。
SELECT * FROM system.parts WHERE database = '<db_name>' AND table = '<tbl_name>' AND disk_name ='ks3' AND active = 1;

移动冷热数据盘的数据

  • 移动热数据盘数据到冷数据盘。
ALTER TABLE <table_name> ON CLUSTER default_cluster MOVE PARTITION <partition> TO DISK 'ks3';
  • 移动冷数据盘数据到热数据盘。
ALTER TABLE <table_name> ON CLUSTER default_cluster MOVE PARTITION <partition> TO DISK 'default';

查看磁盘空间

开通冷热数据分层存储功能后,您可以执行如下语句查看磁盘空间。

SELECT * FROM system.disks;
文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈