Contents

Clickhouse

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数据管理进程掉线,需要重启才能恢复正常.