Clickhouse日志表引擎(TinyLog、StripeLog、Log)

目录

应用场景:单表数据量小于100万,查询简单,一次写入多次查询(数据写入阻塞读)

以下日志表引擎性能:由低到高

1. TinyLog

  • 单线程不支持并行查询
  • 数据按列独立储存
  1. 创建表
clickhouse1 :) 
clickhouse1 :) create table tinylog_table_local on cluster sharding_cluster(
:-] id UInt32,
:-] name String,
:-] city String
:-] ) engine = TinyLog();

CREATE TABLE tinylog_table_local ON CLUSTER sharding_cluster
(
    `id` UInt32,
    `name` String,
    `city` String
)
ENGINE = TinyLog

Query id: 9a90a752-ed12-4efe-b700-b5066c4efe30

┌─host────────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐
│ clickhouse2 │ 9000 │      0 │       │                   3 │                0 │
│ clickhouse1 │ 9000 │      0 │       │                   2 │                0 │
│ clickhouse3 │ 9000 │      0 │       │                   1 │                0 │
│ clickhouse4 │ 9000 │      0 │       │                   0 │                0 │
└─────────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘

4 rows in set. Elapsed: 0.130 sec. 

clickhouse1 :) 
clickhouse1 :) create table tinylog_table_all on cluster sharding_cluster(
:-] id UInt32,
:-] name String,
:-] city String
:-] ) engine = Distributed(sharding_cluster, default, tinylog_table_local, id);

CREATE TABLE tinylog_table_all ON CLUSTER sharding_cluster
(
    `id` UInt32,
    `name` String,
    `city` String
)
ENGINE = Distributed(sharding_cluster, default, tinylog_table_local, id)

Query id: 63c200b8-d14d-4b49-ad62-d361bbec1567

┌─host────────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐
│ clickhouse2 │ 9000 │      0 │       │                   3 │                0 │
│ clickhouse1 │ 9000 │      0 │       │                   2 │                0 │
│ clickhouse3 │ 9000 │      0 │       │                   1 │                0 │
│ clickhouse4 │ 9000 │      0 │       │                   0 │                0 │
└─────────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘

4 rows in set. Elapsed: 0.137 sec. 

clickhouse1 :) 
  1. 插入数据
clickhouse1 :) 
clickhouse1 :) insert into tinylog_table_all(id, name, city) select number, concat('name', toString(number)), concat('city', toString(number)) from numbers(100);

INSERT INTO tinylog_table_all (id, name, city) SELECT
    number,
    concat('name', toString(number)),
    concat('city', toString(number))
FROM numbers(100)

Query id: b059f2fb-2e49-43be-ab41-59b448ae5c3e

Ok.

0 rows in set. Elapsed: 0.010 sec. 

clickhouse1 :) 
  1. 查询数据
clickhouse1 :) 
clickhouse1 :) select * from tinylog_table_all limit 3;

SELECT *
FROM tinylog_table_all
LIMIT 3

Query id: 7708a8b3-7829-476f-8154-77b8e76e8fdb

┌─id─┬─name──┬─city──┐
│  0 │ name0 │ city0 │
│  4 │ name4 │ city4 │
│  8 │ name8 │ city8 │
└────┴───────┴───────┘

3 rows in set. Elapsed: 0.007 sec. 

clickhouse1 :) 

2. StripeLog

  • 多线程支持并行查询
  • 所有列的数据储存在一个文件

使用方式和TinyLog一样,只是表引擎是StripeLog

3. Log

  • 多线程支持并行查询
  • 数据按列独立储存

使用方式和TinyLog一样,只是表引擎是Log

上一篇:js加载优化-二


下一篇:API接口测试--postman读取外部文件进行参数化