clickhouse之常用系统表整理

本文详细介绍ClickHouse中的关键系统表,如资源管理、任务队列、日志跟踪和辅助工具,助你高效排查问题和监控数据库运行状态。

之前有一篇文章总结过和clickhouse监控相关的系统表,见前文:clickhouse之监控系列1-系统表。后来发现在使用clickhouse的过程中,还有很多的系统表对于排查问题和了解当前数据库的运行状态十分有帮助,因此结合官方文档和自己的使用经验,整理如下:

1.资源类

表名 用途
system.clusters 包含配置文件中可用的集群信息以及该集群中的节点信息
system.databases 包含了当前用户可用的数据库的信息,比如数据存储路径等
system.tables 包含每张表的元数据信息,包括建表语句,主键。分区键、条数、大小等信息
system.disks 包含配置文件中定义的磁盘信息,空间总大小,可用空间大小等
system.dictionaries 包含所有定义过的字典信息
system.data_skipping_indices 包含了所有定义过的跳数索引的信息
system.replicas 包含了所有副本相关的信息
system.parts 包含了所有数据分片的信息,这里面最小粒度的统计表,经常用于数据统计

2. 任务类

2.1. system.replication_queue

如果你使用的是ReplicatedMergeTree引擎,那么这张表你大概率会用到,它的数据来源于zookeeper上每张表下面的replication queues节点。根据clic

<think>好的,我现在要解决的问题是用户询问如何在ClickHouse中设置引擎。首先,我需要回忆一下ClickHouse引擎相关知识。记得引擎在ClickHouse中非常重要,因为它决定了数据的存储方式、支持的查询、并发访问等特性。常见的引擎有MergeTree、Log、TinyLog等。 接下来,用户想知道在创建时如何设置引擎。根据之前的经验,CREATE TABLE语句中需要使用ENGINE子句来指定。那具体语法应该是怎样的呢?比如,MergeTree引擎可能需要指定主键和排序键,而Log引擎可能不需要。需要详细说明不同引擎的用法差异。 然后,需要确保给出的示例符合用户的要求,比如正确的LaTeX格式。比如,在示例代码中,是否需要使用行内数学达式?可能不需要,但如果有涉及数学公式的地方,要按照规则用$...$。不过这个问题可能更多是代码示例,所以重点放在正确展示CREATE TABLE语句。 另外,用户提到系统级指令,要求结构清晰,分步骤说明。因此,回答应该分步骤讲解,每个步骤可能包括语法、参数说明、示例,以及不同引擎的区别。 还需要注意常见的引擎类型,比如MergeTree系列(如ReplacingMergeTree、SummingMergeTree),以及外部引擎如Kafka、MySQL等。是否需要简要介绍这些引擎的应用场景? 可能用户需要知道的是最基本的设置方法,然后可以扩展一些常用引擎的例子。比如,MergeTree作为最常用的引擎,必须指定ORDER BY或PRIMARY KEY,而Log引擎适合小规模数据,不需要索引。 另外,要注意语法是否正确,比如ENGINE后面是否跟等号,参数如何传递。例如,ENGINE = MergeTree() ORDER BY (column_name),或者对于ReplicatedMergeTree,需要指定ZooKeeper路径和副本名称。 可能还需要提醒用户注意,不同的引擎有不同的必需参数,例如ReplicatedMergeTree需要zk_path和replica_name,而MergeTree需要ORDER BY。 最后,整理这些思路,用中文分步骤说明,并给出多个示例,确保用户能理解如何在不同场景下设置引擎。同时检查LaTeX格式是否符合要求,但这个问题中可能LaTeX使用较少,主要集中在代码块的正确展示上。</think>在 ClickHouse 中,引擎(Table Engine)是定义数据存储方式、查询特性和物理结构的核心设置。创建时,通过 `ENGINE` 子句指定引擎,语法如下: ```sql CREATE TABLE [IF NOT EXISTS] 名 ( 列名1 类型 [约束], 列名2 类型 [约束], ... ) ENGINE = 引擎名称(参数) [设置参数]; ``` --- ### **步骤详解及常见引擎示例** #### 1. **基础语法** - **必选部分**:`ENGINE = 引擎名称(参数)` - **可选设置**:可添加 `ORDER BY`、`PARTITION BY` 等子句(取决于引擎类型)。 --- #### 2. **常用引擎及设置方法** ##### **(1) MergeTree 系列(核心引擎)** - **场景**:大数据分析、支持索引、分区和副本。 - **基础示例**: ```sql CREATE TABLE example_merge_tree ( id UInt32, timestamp DateTime, value Float64 ) ENGINE = MergeTree() ORDER BY (id, timestamp) PARTITION BY toYYYYMM(timestamp); ``` - **关键参数**: - `ORDER BY`:必选,定义数据排序规则(影响查询性能)。 - `PARTITION BY`:可选,定义分区键(如按时间分区)。 - **变种引擎**: - `ReplacingMergeTree`:去重引擎 ```sql ENGINE = ReplacingMergeTree(version_column) ``` - `SummingMergeTree`:预聚合引擎 ```sql ENGINE = SummingMergeTree((metric_columns)) ``` ##### **(2) Log 系列(轻量级引擎)** - **场景**:小规模数据(<1M 行),快速写入,无索引。 - **示例**: ```sql CREATE TABLE example_log ( id UInt32, message String ) ENGINE = Log(); ``` - **特点**:不支持 `ALTER`、`INDEX`,数据存储在磁盘。 ##### **(3) 外部集成引擎** - **MySQL 引擎**:映射远程 MySQL ```sql ENGINE = MySQL('host:port', 'database', 'table', 'user', 'password') ``` - **Kafka 引擎**:消费 Kafka 数据流 ```sql ENGINE = Kafka() SETTINGS kafka_broker_list = 'host:port', kafka_topic_list = 'topic', kafka_group_name = 'group'; ``` --- #### 3. **关键注意事项** - **区分大小写**:名、列名和引擎名称需注意大小写。 - **必需参数**:如 `ReplicatedMergeTree` 需要 ZooKeeper 路径: ```sql ENGINE = ReplicatedMergeTree( '/clickhouse/tables/{shard}/table_name', '{replica}' ) ``` - **存储路径**:不同引擎数据存储路径不同(`MergeTree` 默认在 `/var/lib/clickhouse/data`)。 --- ### **总结** 选择引擎时需根据场景权衡: - **分析场景** → `MergeTree` 系列 - **临时数据** → `Log`/`TinyLog`/`StripeLog` - **外部集成** → `Kafka`/`MySQL`/`HDFS` 引擎 建议优先学习 `MergeTree` 引擎,它是 ClickHouse 高性能的核心基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

普普通通程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值