qq-22432832

ClickHouse Sql

删除数据

  • [ON CLUSTER cluster]为可选项,只删除本地机器的可不加,一般地,我们都是要加的
  • [TEMPORARY] 临时表 关键字

1. 删除库

删除库中所有表,然后删除库

DROP DATABASE [IF EXISTS] db [ON CLUSTER cluster]

2. 删除表/视图

删除【本地表】、【分布表】,立即删除,删除后不可写入了,因为没有表元数据了。后重建表,不会报错。

DROP [TEMPORARY] TABLE [IF EXISTS] [db.]name [ON CLUSTER cluster]
DROP VIEW [IF EXISTS] [db.]name [ON CLUSTER cluster]

clickhouse默认的库引擎是原子数据库引擎
删除【复制表】后重建同名表,会出现创建失败提示,因为 复制表的引擎是ReplicatedMergeTree引擎族,需要zk路径和备份名这俩参数。删除后不会立即删除复制(备份)数据,默认480s后删除。所以立马重建的话可能会报创建失败。避免这个报错可使用Ordinary表引擎,可使用uniq ZK路径,也可修改如下默认的480s参数:

-- config.xml
<database_atomic_delay_before_drop_table_sec>480</database_atomic_delay_before_drop_table_sec>

3. 清空表

truncate 表相对delete 表的优点是:使用的系统和事务日志资源少
特点是:truncate 表后,表和表的索引讲重新设置成初始大小

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

4. 指定命中数据删除

delete 表的特点是:可以表达式删除,而不是全表全部行删除

-- 不加where就和 truncate 一样的效果了
delete table database.table
-- 指定条件删除
delete table database.table where exp_function

5. 删除字典

DROP DICTIONARY [IF EXISTS] [db.]name

6. 删除用户

删除多个用户,用户名按,分割

DROP USER [IF EXISTS] name [,...] [ON CLUSTER cluster_name]

7. 删除用户的角色(权限组)

DROP ROLE [IF EXISTS] name [,...] [ON CLUSTER cluster_name]

8. 分布式集群下,查看表分区存储大小

这里每个分片的大小可能不一样,集群可能有几个分片,需要将几个分片的加起来

select
	substring(partition,1,10) part,
	sum(rows) AS `总行数`,
	formatReadableSize(sum(data_uncompressed_bytes)) AS `原始大小`,
	formatReadableSize(sum(data_compressed_bytes)) AS `压缩大小`,
	round((sum(data_compressed_bytes) / sum(data_uncompressed_bytes)) * 100,0) AS `压缩率`
from
	system.parts
where
	database = 'database_T'
	and table = 'table_T'
group by
	substring(partition,1,10);

??

??

??

posted on 2021-11-12 22:29  春马与夏  阅读(25)  评论(0编辑  收藏  举报  来源

导航