Clickhouse
Contents
Clickhouse作为一种数据仓库的产品.
优点
- 文档清晰且有AI问答工具.
- 入门难度很低,拥有Mysql的经验即可.
- 阿里云也有其产品可以购买,生产稳定,出问题概率低.
- 数据压缩,存储成本低.
- 索引速度快.
- 可以直接录入Mysql作为data source.
- 交互协议上支持Http协议,伪Mysql协议和原生高性能协议.
GUI推荐
DataGrip.
SQL操作
数据管理利用TTL特性进行数据回收.
数据分布
查询
select * from system.parts limit 10;
# 目前转移的数据
select * from system.mutations;
计算表大小
SELECT
total_bytes/total_rows,
table,database,
formatReadableSize(total_bytes) AS total_bytes_on_disk
FROM system.tables
WHERE table = 'table';
表转移
RENAME TABLE database.exist_table TO database.old_table, database.new_table TO database.exist_table;
数据回收
ALTER TABLE database.table DROP PARTITION '20240925';
修改TTL
ALTER TABLE database.table
MODIFY TTL timestamp + toIntervalMonth(2);
查看表结构
SELECT
name AS field_name,
table AS table_name,
type AS field_type,
comment AS field_comment
FROM system.columns
WHERE database = 'database' AND table = 'table';
常用函数
易读数量
formatReadableQuantity(count())
时间切割
toStartOfInterval(toDateTime(timestamp), INTERVAL 1 day ) as interval1
截取数据
substring(message, -20)
数据类型转换
toString
数据拼接
concat(a,'',toString(b))
clickhouse 同步mysql数据
SET allow_experimental_database_materialized_mysql=1;
CREATE DATABASE new_database
ENGINE = MaterializedMySQL('host:3306','database', 'user', 'password')
SETTINGS
allows_query_when_mysql_lost=true,
max_wait_time_when_mysql_unavailable=10000;
-- drop database new_database;
mysql 服务端
default_authentication_plugin = mysql_native_password
gtid_mode = on
mysql 表条件
MySQL中的每个表都应包含PRIMARY KEY,并且如果表中包含ENUM字段值超出范围(在ENUM签名中指定),则无法进行复制。
mysql ip白名单检查,机器ip白名单检查.
权限管理
GRANT SELECT ON database.* TO user;
GRANT ALL ON database.* TO user;
GRANT SELECT,INSERT ON database.* TO user;
GRANT OPTIMIZE ON database.* TO user;
GRANT CREATE ON database.* TO user;
写入
数据录入上建议低频且大批量写入.
磁盘满时,clickhouse则会写入失败.
磁盘写满可能会影响其他进程作业,比如TTL数据管理进程掉线,需要重启才能恢复正常.