最近更新时间:2023-10-08 11:11:35
为降低海量数据存储成本,金山云ClickHouse提供了冷热数据分层存储功能。用户可以将热数据存放在EBS云盘中,冷数据存放至对象存储KS3中,在满足数据查询性能的基础上,有效降低数据存储成本。
1. 热数据: 访问频次较高和创建时间较新的数据,存储在热数据盘(即EBS云盘)中,满足高性能访问的需求。
2. 冷数据: 访问频次较低和创建时间较久的数据,存储在较低价的冷数据盘(即对象存储KS3)中,满足降低存储成本的需求。
3. 冷热数据分层存储提供了三种数据移动方式, 具体如下:
默认存储策略: 将新写入的数据存储在热数据盘中,提供高效查询。当热数据存储量达到业务设置阈值时,自动按照时间先后顺序将热数据盘的数据移动到冷数据盘中,从而释放热数据盘存储空间。
TTL分层存储策略: 在默认存储策略基础上,添加TTL语句,实现将间隔时间之前的所有数据自动移动到冷数据盘中。
手动方式将数据在冷、热数据盘之间移动。
冷数据盘单价,详见产品规格及计费说明。
计费公式: 冷存储空间费用=冷数据存储单价×冷数据存储使用量×使用时长。
示例: 国内冷数据盘单价为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元。
在冷热数据分层配置窗口进行配置,点击确定,即可开启冷热数据分层服务。参数配置如下:
参数 | 说明 |
---|---|
分层策略 | 当热数据盘中的已用存储空间所占比大于该参数时,将按照时间先后将数据迁移到冷数据盘。取值范围为[5,100]的整数,且为5的倍数。默认值为90%,代表已用存储空间所占比例大于90%时,将自动进行数据移动。 |
冷数据合并 | 冷数据盘中的数据是否进行合并。选项为:合并,默认值;不合并。 |
4. 在实例详情页面中可以查看冷热数据分层信息
5. 点击修改,可修改“分层策略”和“冷数据合并”,点击保存,完成修改。
在默认存储策略的基础上,添加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分层存储策略的日期或日期时间类型的列以及间隔时间,语法如下:
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;
纯净模式