1)一个分区一个文件夹
default数据库下面的bank_replica表的数据结构如下:
[外链图片转存失败(img-kFDRvV9i-1568252836912)(evernotecid://4CF2DB7A-63C8-4462-AF1B-D4FBD7AC5C92/appyinxiangcom/215407/ENResource/p779)]
查看分区信息:
ckprd1 :) SELECT partition, name, active FROM system.parts WHERE table = 'bank_replica';
SELECT
partition,
name,
active
FROM system.parts
WHERE table = 'bank_replica'
┌─partition─┬─name─────────────────────────────────┬─active─┐
│ dec │ 0dcda14aa879a9e9de8ce0a075dac042_3_3_0 │ 1 │
│ mar │ 534f9f773916a62e1ce21b79e23ba5e7_3_3_0 │ 1 │
│ oct │ 6d3d797dfda12e0b8c837064b52bacc8_3_3_0 │ 1 │
│ jun │ 9a34545ffc3f5f4b8bee104063c6dd61_3_3_0 │ 1 │
│ nov │ 9bbaa4d2c2df481f7661e7257563da2d_3_3_0 │ 1 │
│ sep │ a6ad89f019506d5c2359e353d73e033d_3_3_0 │ 1 │
│ apr │ b3478f1e0b48f24b48cfc42239749609_3_3_0 │ 1 │
│ jul │ e0f64a6601e692e6c7761024aa627976_3_3_0 │ 1 │
│ aug │ f3fd28549b760f6d22e03bab5d963e1b_3_3_0 │ 1 │
│ may │ f6139eb0d4e1e322ceebd4cc93d30326_3_3_0 │ 1 │
└───────────┴──────────────────────────────────────┴───────┘
10 rows in set. Elapsed: 0.002 sec.
2)每个分区下一个字段存储为一个被压缩的小文件,以及对应的索引/顺序标识,空值会有特殊的文件记录

在集群的每个机器上面建立本地表这里需要谨记,在进行下面的操作前(使用ReplicatedMergeTree表引擎),必须保证集群配置中internal_replication=true且配置了zookeeper。1. 先任选一台机器建个表插入数据(方便测试)CREATE TABLE IF NOT EXISTS bank (\age UInt16, \job String, \marit...
TL;DR
如果预估自己的业务数据量不大(日增不到百万行), 那么写分布式表和本地表都可以, 但要注意如果选择写本地表, 请保证每次写入数据都建立新的连接, 且每个连接写入的数据量基本相同
如果预估自己的业务数据量大(日增百万以上, 并发插入大于10), 那么请写本地表
建议每次插入50W行左右数据, 最多不可超过100W行. 总之CH不像MySQL要小事务. 比如1000W行数据, MySQL建议一次插入1W左右, 使用小事务, 执行1000次. CH建议20次,每次50W. 这是MergeTree引擎原
外部表:ck中只有元数据,数据在hdfs等外部存储介质中
本地表:ck的单机表,在某台机器上创建,就只能在这个机器上使用
副本表:数据在ck集群上,每个分片有多个副本
分布式表:相当于传统数据库的视图,对大批量的数据不推荐直接插分布式表
a.安装 两分片两副本的Clickhouse集群
b.样例数据
1,羲凡,29,1992-02-27,nj
5,张三,27,1994-02-27,sh
3,李四,29
1.clickhouse的表分为两种:
分布式表
一个逻辑上的表, 可以理解为数据库中的视图, 一般查询都查询分布式表. 分布式表引擎会将我们的查询请求路由本地表进行查询, 然后进行汇总最终返回给用户。
本地表:
实际存储数据的表。
2.不写分布式表的原因
1.分布式表接收到数据后会将数据拆分成多个parts, 并转发数据到其它服务器, 会引起服务器间网络流量增加、服务器merge的工作量增加, 导致写入速度变慢, 并且增加了Too many parts的可能性。
2.数据的一致性问题, 先在分布式表所在的
在前面的文章中我们详细介绍了 MergeTree 表引擎、MergeTree 家族其他表引擎、MergeTree 二级索引等内容,clickhouse数据库都是在单节点上运行的,作为OLAP处理的大数据利器,clickhouse 显然少了两个功能——数据高可用(HA)和横向扩展。HA的目的是为了如果有一个数据副本丢失或者损坏不至于完全丢失数据,至于横向扩展自然是为了提高数据存储能力了。
1. MergeTree副本表
ClickHouse MergeTree 副本表的数据一致性同步是通过Zookeeper实