数据存储的目录,在存储数据时是先经过压缩后再存储的,压缩效率很高
操作命令:
sudo clickhouse start
sudo clickhouse restart
sudo clickhouse status
进入clickhouse
clickhouse-client -m
CREATE TABLE db_13.t_assist
(
`modelId` UInt64,
`taskId` UInt64,
`testNo` String,
`tdId` UInt64,
`eventDay` String,
`eventDaytime` UInt64,
`eventBatch` UInt64,
`eventId` UInt64,
`imageIndex` String,
`gcz_50` String,
`ymz_50` String,
`gcz_51` String,
....
`gcz_89` String,
`ymz_89` String
)
ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/86ee6ab8-6acb-46e8-b80f-a1786df37850/{
shard}',
'{
replica}')
PARTITION BY tdId
ORDER BY (modelId,tdId,eventBatch,eventDay,eventId)
SETTINGS index_granularity = 8192
1)表引擎类型
ReplicatedReplacingMergeTree
2)PARTITION BY tdId
表示按照tdId【通道id】进行分区存储
3)index_granularity = 8192
直接翻译的话就是索引粒度,指在稀疏索引中两个相邻索引对应数据的间隔。ClickHouse 中的 MergeTree 默认是 8192。官方不建议修改这个值,除非该列存在大量重复值,比如在一个分区中几万行才有一个不同数据
2、表引擎
ck中的表引擎类似于mysql中的表引擎
1.1 MergeTree
Clickhouse中最强大的表引擎当属MergeTree(合并树)引擎及该系列(*MergeTree)中的其他引擎,支持索引和分区,地位可以相当于innodb在Mysql。还基于MergeTree衍生很多其他有特色的引擎。
docker中安装的clickhouse,需要进入ck命令
# docker exec -it clickhouse /bin/bash
# /bin/clickhouse-client --password
输入命令进入
查看default库下的表
2.1 建表关键字说明
1、建表语句:
CREATE TABLE default.t_order_mt
(
`id` UInt32,
`sku_id` String,
`total_amount` Decimal(16,2),
`create_time` DateTime
)
ENGINE = MergeTree
PARTITION BY toYYYYMMDD(create_time)
PRIMARY KEY id
ORDER BY (id,sku_id)
SETTINGS index_granularity = 8192
插入数据:
insert into t_order_mt values