据我所知,clickhouse只允许插入新数据。但是是否可以删除某个时间段之前的块,以避免HDD溢出?
答案 0 :(得分:8)
是的,请参阅文档https://clickhouse.yandex/docs/en/query_language/alter/#mutations。
该功能已在2018年第三季度实现。
areAnimationsEnabled
也可以用类似的方法进行突变(ALTER TABLE <table> DELETE WHERE <filter expression>
UPDATE
请注意,两个命令都不直接执行突变。相反,他们安排ClickHouse在后台独立执行的变异。您可以通过
检查未完成的突变ALTER TABLE <table> UPDATE column1 = expr1 [, ...] WHERE <filter expression>
答案 1 :(得分:2)
创建和删除分区的示例
CREATE TABLE test.partitioned_by_month(d Date, x UInt8) ENGINE = MergeTree
PARTITION BY toYYYYMM(d) ORDER BY x;
INSERT INTO test.partitioned_by_month VALUES ('2000-01-01', 1), ('2000-01-02', 2), ('2000-01-03', 3);
INSERT INTO test.partitioned_by_month VALUES ('2000-02-03', 4), ('2000-02-03', 5);
INSERT INTO test.partitioned_by_month VALUES ('2000-03-03', 4), ('2000-03-03', 5);
SELECT * FROM test.partitioned_by_month;
---d------------|-------x-----
2000-02-03 | 4
2000-02-03 | 5
---d------------|-------x-----
2000-03-03 | 4
2000-03-03 | 5
---d------------|-------x-----
2000-01-01 | 1
2000-01-02 | 2
2000-01-03 | 3
ALTER TABLE test.partitioned_by_month DROP PARTITION 200001;
select * from partitioned_by_month;
---d------------|-------x-----
2000-03-03 | 4
2000-03-03 | 5
---d------------|-------x-----
2000-02-03 | 4
2000-02-03 | 5
答案 2 :(得分:1)
Clickhouse不具有Mysql数据库之类的更新/删除功能。但是我们仍然可以通过在分区中组织数据来进行删除。我不知道您如何管理数据,因此我在这里举一个例子,例如将数据存储在按月分区中。
通过使用“ DROP PARTITION”命令,您可以通过删除该月的分区来删除该月的数据,这是如何删除分区https://clickhouse.yandex/blog/en/how-to-update-data-in-clickhouse的完整说明。