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;

相关推荐
pjj198542 天前
ClickHouse 与 Doris 数据库技术梳理:看懂分析型数据库
数据库·clickhouse
SelectDB技术团队3 天前
ClickHouse 支持存算分离吗?Doris 社区版原生存算分离怎么落地
数据库·clickhouse·云原生·开源·apache doris·技术选型·存算分层
SelectDB技术团队4 天前
ClickHouse SQL 好学吗?从 MySQL 迁移 Doris 的完整兼容验证
人工智能·sql·mysql·clickhouse·开源·apache doris·增量计算
喵了几个咪5 天前
GoWind UBA 拆解:把 Doris UNIQUE KEY 翻译成 ClickHouse——读数正确性对齐实录
开发语言·后端·clickhouse·微服务·golang·gowind
爱吃火鸡面呀5 天前
MySQL、ClickHouse、Doris、Hive、Spark SQL、Flink SQL 选型对比:优点、缺点与面试话术
hive·mysql·clickhouse
SelectDB技术团队8 天前
SelectDB 架构演进与 ClickHouse 迁移指南
大数据·数据库·clickhouse·云原生·架构·数据分析·apache doris
ClickHouseDB9 天前
使用 ClickHouse 与 Massive 构建实时市场数据应用
clickhouse
秉寒-CHO9 天前
从 ClickHouse 到 StarRocks:我在真实业务中怎么选明细、聚合、主键模型
大数据·clickhouse
IT界的老黄牛10 天前
ClickHouse 运维 SQL 速查:system 表查跑批、内存、合并与磁盘一篇通
大数据·clickhouse·磁盘占用·命令速查·运维排查·system表
wengad11 天前
podman安装clickhouse
clickhouse·podman