clickhouse表引擎

本文详细介绍了ClickHouse的表引擎,主要包括Log家族、特殊引擎和Mergetree家族。Log家族适用于小表,如StripeLog、Log和TinyLog,不支持索引和alter操作。特殊引擎如Memory用于内存存储,MergeTree家族则是官方推荐的生产使用引擎,支持数据分区、索引等,包括MergeTree、ReplacingMergeTree、CollapsingMergeTree、VersionedCollapsingMergeTree、SummingMergeTree等,适合大数据分析场景。
摘要由CSDN通过智能技术生成

表引擎决定了数据的存储方式和位置、支持哪些查询以及如何支持、是否支持并发数据访问、是否存在索引及使用规则、是否可以执行多线程请求、数据复制参数。

clickhouse表引擎的分类:MergeTree家族、Log家族、集成引擎、特殊引擎

1. Log家族

Log家族主要用于小表数据分析,快速写入(最多约100w行),全表读取。包括StripeLog、Log、TinyLog。

共性:数据按顺序追加到磁盘文件、不支持alter操作(更新、删除、更改表结构均为alter操作)、不支持索引(select范围查询效率不高)、不支持原子写(服务器意外中断数据会损坏)、并发访问数据锁(insert会阻塞select操作)。

TinyLog :最简单,功能最差,效率最低。不支持并发读取数据文件,查询性能最差;与log引擎一样每一列存储在一个单独文件;适用于write-once表,小批量处理中间数据。

StripLog:支持并发读取数据文件(多线程读取);将所有列存储在同一个大文件中,减少了文件描述符;

Log:支持并发读取数据文件;每个列会单独存储在一个独立文件中,查询效率较高。

适用于临时数据,write-once 表以及测试或演示目的。

建表语句:

CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
    column1_name [type1] [DEFAULT|MATERIALIZED|ALIAS expr1],
    column2_name [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],
    ...
) ENGINE = StripeLog

其中:

(1)ON CLUSTER表示在集群中每个节点建表,cluster name为逻辑集群名称自定义。Cluster由yaml文件定义,物理集群和逻辑集群松耦合,即一个物理集群可能存在多个逻辑集群。若不加ON CLUSTER标识仅在当前节点建表。

(2)Log家族ENGINE可选值为:StripeLog、Log、TinyLog,该字段大小写敏感

(3)type字段大小写敏感

示例:

CREATE TABLE IF NOT EXISTS default.TinyLogTest2(c1 String,c2 UInt16) ENGINE = TinyLog;
CREATE TABLE IF NOT EXISTS default.LogTest2(c1 String,c2 UInt16) ENGINE = Log;
CREATE TABLE IF NOT EXISTS default.StripelogTest1(c1 String,c2 UInt16) ENGINE = Stripelog;



>> ls
LogTest2  StripeLogTest1  TinyLogTest2 (每个表存储在一个单独文件夹下)
>>cd TinyLogTest2
>>ls
c1.bin  c2.bin  sizes.json     (c1.bin 列c1的数据文件、c2.bin 列c2的数据文件)
>>cat sizes.json 
{"yandex":{"c1%2Ebin":{"size":"131"},"c2%2Ebin":{"size":"112"}}}
>> cd StripeLogTest1
>> ls
data.bin  index.mrk  sizes.json 
(data.bin 数据文件、index.mrk 标记文件,标记每个数据块每列的偏移量)
>>cat sizes.json 
{"yandex":{"data%2Ebin":{"size":"338"},"index%2Emrk":{"size":"187"}}} 
>> cd LogTest2
>> ls
c1.bin  c2.bin  __marks.mrk  sizes.json
>&g
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值