clickhouse 引擎简介-clickhouse mergetreethread
ch 引擎主要分为`数据库引擎` 及 `表引擎`
数据库引擎
延时引擎表数据存储于内存中,适用于 `*Log表引擎`
MySQL引擎MySQL引擎用于将远程的Myql服务中的表映射到ClickHouse中,并允许对表进行`insert` 和`select`操作,方便ch与mysql之间进行数据交换。
RENAME / CREATE TABLE / ALTER 无法操作
CREATE DATABASE youi_activity_db ENGINE = MySQL(127.0.0.1:3306, youi_activity_db, root, root) Query id: 4567adc3-3919-4202-9874-00ad29c1d651 Ok. # 查看youi_activity_db中数据表 SHOW TABLES Query id: b10b9a76-2442-4bae-92d9-5ba16afd8634 ┌─name────────────────────────────┐ │ t_activity │ │ t_request_log │ └─────────────────────────────────┘表引擎
表引擎除自带的合并树家族引擎外,还集成了`jdbc` `odbc` `hdfs` `kafka` `mysql` 引擎,用于执行远程的数据查询
MergeTree
MergeTree `系列`的引擎被设计于用于插入极大量的数据到一张表中。数据可以以数据片段的形式一个接着一个快速写入,数据片段在后台按照一定的规则进行合并。
主要特点:
存储的数据按照主键排序支持数据分区,如果指定了分区键的话。 - 相同数据集 结果集情况下,clickhouse中带分区的操作会比普通操作更快。支持副本支持数据采样创建表
CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster] ( name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1] [TTL expr1], name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2] [TTL expr2], ... INDEX index_name1 expr1 TYPE type1(...) GRANULARITY value1, INDEX index_name2 expr2 TYPE type2(...) GRANULARITY value2 ) ENGINE = MergeTree() ORDER BY expr [PARTITION BY expr] [PRIMARY KEY expr] [SAMPLE BY expr] [TTL expr [DELETE|TO DISK xxx|TO VOLUME xxx], ...] [SETTINGS name=value, ...]ENGINE 参数可指定其它表引擎
子句
ENGINE - 引擎名和参数ORDER BY - 排序键可以由一组列的元组或任意表达式。 `clickhouse 会默认使用排序键作为主键`
PARTITION BY - 分区键要按月分区,可以使用表达式 toYYYYMM(date_column) ,这里的 date_column 是一个 Date 类型的列。分区名的格式会是 "YYYYMM" 。
PRIMARY KEY - 主键默认使用排序键
主键无唯一约束
SAMPLE BY - 采样表达式SETTINGS`index_granularity` - 索引粒度,索引以相信的标记间的数据行数为单位, 默认为8192
`index_granularity_bytes` - 索引粒度, 以字节为单位,默认10M
ENGINE MergeTree() PARTITION BY toYYYYMM(EventDate) ORDER BY (CounterID, EventDate, intHash32(UserID)) SAMPLE BY intHash32(UserID) SETTINGS index_granularity=8192AggregatingMergeTree
继承MergeTree, 使用AggregatingMergeTree表来做增量数据的聚合统计,包括物化视图的数据聚合。
SummingMergeTree
继承MergeTree, 使用SummingMergeTree时,可以把具有相同主键的行合并为一行,该行包含了被合并的行中具有数值数据类型的列的汇总值。
ReplacingMergeTree
删除排序键相同的重复项。 数据的去重只在数据合并期间进行。合并会在后台一个不确定的时间进行,因此无法预先做出计划。
可以调用optimize 语句发起计划合并,但是optimize 会引发对数据的大量读写
以上就是关于《clickhouse 引擎简介-clickhouse mergetreethread》的全部内容,本文网址:https://www.7ca.cn/baike/59679.shtml,如对您有帮助可以分享给好友,谢谢。