Clickhouse语法及配置

  • Clickhouse常用语法

插入

INSERT INTO users VALUES (1, 'Alice', now()), (2, 'Bob', now());

删除

与mysql不一致

ALTER TABLE users DELETE WHERE age > 30;

更新

与mysql不一致

ALTER TABLE users UPDATE name = 'Alice_New' WHERE id = 1;

​​​​​​​查询

SELECT *from hfhq.odr_fee_detail ofd where str3 like '%2%'

  • 优化参数

1.禁止使用 Nullable

官方已经指出 Nullable 类型几乎总是会拖累性能,因为存储 Nullable 列时需要创建一个额外的文件来存储 NULL 的标记,并且 Nullable 列无法被索引。因此除非极特殊情况,应直接使用字段默认值表示空,或者自行指定一个在业务中无意义的值(例如用-1 表示没有商品ID)。

https://clickhouse.com/docs/zh/sql-reference/data-types/nullable

2.​​​​​​​启用 optimize_move_to_prewhere

启用内置优化规则提升执行效率:

optimize_move_to_prewhere​(默认开启)

作用:自动将 WHERE 条件转换为 Prewhere,优先过滤数据再读取列,减少 I/O。

如果未开启,配置文件添加

<profiles>

<default>

<optimize_move_to_prewhere>1</optimize_move_to_prewhere>

</default>

</profiles>

查询是否启用:SELECT * FROM system.settings WHERE name = 'optimize_move_to_prewhere';

​​​​​​​3.启用 optimize_functions_to_subcolumns

启用或禁用通过将某些函数转换为读取子列进行优化。这可以减少要读取的数据量。

https://clickhouse.com/docs/zh/operations/settings/settings#optimize_functions_to_subcolumns

/etc/clickhouse-server/users.xml

<profiles>

<default>

<optimize_functions_to_subcolumns>1</optimize_functions_to_subcolumns>

</default>

</profiles>

查询是否启用:SELECT * FROM system.settings WHERE name = 'optimize_functions_to_subcolumns';

​​​​​​​4.关闭 服务器运行日志

/etc/clickhouse-server/config.xml

  1. <level>trace</level>
    trace是最详细的日志级别,记录所有操作(包括低级别调试信息),会导致:日志量暴增,I/O 压力大,磁盘空间快速耗尽,查询性能下降(日志写入与查询争抢资源)

调整参数:调整为 warning,仅记录警告及以上信息

  1. <size>1000M</size> <count>10</count>

单个日志文件最大 1GB,保留 10 个文件 → 总日志量可达 10GB,可能占用过高磁盘空间

调整参数:<count>从 10降至 5,总日志量限制在5GB以内

可以去对应目录删除之前日志

/var/log/clickhouse-server/clickhouse-server.log

​​​​​​​5.关闭查询日志

与mysql query_log一致,开启后会记录所有sql语句

/etc/clickhouse-server/users.xml

<profiles>

<default>

<log_queries>0</log_queries>

</default>

</profiles>

配置完可以把10天前记录的数据清掉

ALTER TABLE system.query_log DELETE WHERE event_time < now() - INTERVAL 10 DAY;

相关推荐
l1t2 天前
PostgreSQL pg_clickhouse插件的安装和使用
数据库·clickhouse·postgresql·插件
honder试试3 天前
Springboot实现Clickhouse连接池的配置和接口查询
spring boot·后端·clickhouse
Mr_wilson_liu3 天前
通过DBeaver22.0.5 连接数据库ck(clickhouse)、pg(postgres)
数据库·clickhouse
波波仔865 天前
clickhouse表存储引擎
clickhouse·表存储引擎
波波仔865 天前
clickhouse存储和分区
clickhouse·排序·分区
波波仔865 天前
clickhouse insert与update区别
clickhouse·insert·update
波波仔865 天前
clickhouse简介
数据库·clickhouse
深色風信子5 天前
ClickHouse 快速入门
clickhouse·列式存储
波波仔865 天前
行存储与列存储的区别
数据库·clickhouse·行存储·列储存
吃喝不愁霸王餐APP开发者5 天前
霸王餐用户行为埋点:Kafka Connect+ClickHouse实时OLAP分析
分布式·clickhouse·kafka