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);