sql—是否可以从clickhouse表中删除旧记录?

gcmastyq  于 2021-07-15  发布在  ClickHouse
关注(0)|答案(3)|浏览(369)

据我所知,clickhouse只允许插入新数据。但有没有可能删除一段时间以前的块以避免硬盘溢出?

afdcj2ne

afdcj2ne1#

利用突变改变数据

请参阅“突变”功能上的文档https://clickhouse.yandex/docs/en/query_language/alter/#mutations.
该功能于2018年第3季度实施。

删除数据

ALTER TABLE <table> DELETE WHERE <filter expression>

“脏”全部删除

必须始终指定筛选器表达式。如果您想通过变异删除所有数据,请指定总是正确的内容,例如:

ALTER TABLE <table> DELETE WHERE 1=1

更新数据

也有可能变异( UPDATE )类似的方式

ALTER TABLE <table> UPDATE column1 = expr1 [, ...] WHERE <filter expression>

注意它是异步的

请注意,上面的所有命令都不会直接(同步)执行数据突变。相反,他们计划在后台独立执行(异步)的clickhouse变异。这就是为什么 ALTER TABLE 选择了语法而不是典型的sql UPDATE / DELETE . 你可以通过

SELECT *
FROM system.mutations
WHERE is_done = 0

在不使用突变的情况下改变数据

有一个 TRUNCATE TABLE 语句,语法如下:

TRUNCATE TABLE [IF EXISTS] [db.]name [ON CLUSTER cluster]

这将同步截断表。它将检查表大小,因此如果表大小超过,则不允许删除 max_table_size_to_drop . 请参阅以下文档:
https://clickhouse.tech/docs/en/sql-reference/statements/truncate/

yzckvree

yzckvree2#

创建和删除分区的示例

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
fae0ux8s

fae0ux8s3#

clickhouse没有像mysql数据库那样的更新/删除功能。但是我们仍然可以通过在分区中组织数据来进行删除,我不知道如何管理数据,所以我在这里举一个例子,比如在一个月的分区中存储数据。
通过使用“droppartition”命令,您可以通过删除当月的分区来删除当月的数据,下面是如何删除分区的完整说明https://clickhouse.yandex/blog/en/how-to-update-data-in-clickhouse.

相关问题