表格的行
bgcolor 背景颜色
backgroung 背景
height 高度
align 行的水平对齐方式
值有 right left center
valign 行的垂直对齐方式
值有 top bottom middle
单元格
bgcolor 背景颜色
backgroung 背景图片
width 宽度
height 高度
align 单元格的水平对齐方式
ralign 单元格的垂直对齐方式
rowspan 合并行(垂直合并)
colspan 合并列(水平对齐方式)
表格
表格是用来展示数据的
width 和 height 一般只写一个另一个会等比例改变
表格标签
表格的属性
背景颜色
边框
背景
宽度
单元格与单元格之间的距离
单元格与字体之间的距离
高度
对齐,值:left right center
边框颜色
| 表格的表头标签。具有的所有属性默认加粗居中
| 表格的行
bgcolor 背景颜色
backgroung 背景
height 高度
align 行的水平对齐方式
值有 right left center
valign 行的垂直对齐方式
值有 top bottom middle
单元格
bgcolor 背景颜色
backgroung 背景图片
width 宽度
height 高度
align 单元格的水平对齐方式
ralign 单元格的垂直对齐方式
rowspan 合并行(垂直合并)
colspan 合并列(水平对齐方式)
列表标签
有序列表:标签
type=””>属性值有A,a,I,i,1
start=”“> 属性值为数字
有序列表的列表项
无序列表:标签
type=””>属性值有disc circle square
无序列表的列表项
自定义列表:标签
列表的标题
;列表的列表项
图像:图像标签
图片的路径
图片的高度
<img heigh
五、核心概念
5.1.表引擎(Engine)
表引擎决定了数据在文件系统中的存储方式,常用的也是官方推荐的存储引擎是MergeTree系列,如果需要数据副本的话可以使用ReplicatedMergeTree系列,相当于MergeTree的副本版本。读取集群数据需要使用分布式表引擎Distribute。
5.2.表分区(Partition)
表中的数据可以按照指定的字段分区存储,每个分区在文件系统中都是都以目录的形式存在。常用时间字段作为分区字段,数据量大的表可以按照小时分区,数据量小的表可以在按照天分区或者月分区,查询时,使用分区字段作为Where条件,可以有效的过滤掉大量非结果集数据。
5.3.分片(Shard)
一个分片本身就是ClickHouse一个实例节点,分片的本质就是为了提高查询效率,将一份全量的数据分成多份(片),从而降低单节点的数据扫描数量,提高查询性能。
5.4. 复制集(Replication)
简单理解就是相同的数据备份,在CK中通过复制集,我们实现保障了数据可靠性外,也通过多副本的方式,增加了CK查询的并发能力。这里一般有2种方式:(1)基于ZooKeeper的表复制方式;(2)基于Cluster的复制方式。由于我们推荐的数据写入方式本地表写入,禁止分布式表写入,所以我们的复制表只考虑ZooKeeper的表复制方案。
5.5.集群(Cluster)
可以使用多个ClickHouse实例组成一个集群,并统一对外提供服务。
六、主要表引擎深入解析
6.1.TinyLog
最简单的表引擎,用于将数据存储在磁盘上,每列都存储在单独的压缩文件中,写入时,数据附加到文件末尾.
缺点:(1)没有并发控制(没有做优化,同时写会数据会损坏,报错) (2)不支持索引 (3)数据存储在磁盘上
优点:(1)小表节省空间 (2)数据写入,只查询,不做增删改操作创建表:
create table stu1(id Int8, name String)ENGINE=TinyLog
6.2. Memory
内存引擎,数据以未压缩的原始形式直接保存在内存中,服务器重启,数据会消失,读写操作不会相互阻塞,不支持索引。建议上限1亿行的场景。优点:简单查询下有非常高的性能表现(超过10G/s)
创建表:
create table stu1(id Int8, name String)ENGINE=Merge(db_name, 'regex_tablename')
6.3.Merge
本身不存储数据,但可用于同时从任意多个其他的表中读取数据,读是自动并行的,不支持写入,读取时,那些真正被读取到数据的表的索引(如果有的话)会被占用,默认是本地表,不能跨机器。参数:一个数据库名和一个用于匹配表名的正则表达式
创建表:
create table t1(id Int8, name String)ENGINE=TinyLog
create table t2(id Int8, name String)ENGINE=TinyLog
create table t3(id Int8, name String)ENGINE=TinyLog
create table t (id UInt16, name String)ENGINE=Merge(currentDatabase(), ‘^t’)
6.4.MergeTree
ck中最强大的表引擎MergeTree(合并树)和该系列(*MergeTree)中的其他引擎。使用场景:有巨量数据要插入到表中,高效一批批写入数据片段,并希望这些数据片段在后台按照一定规则合并。相比在插入时不断修改(重写)数据进行存储,会高效很多。优点:(1)数据按主键排序 (2)可以使用分区(如果指定了主键)(3)支持数据副本 (4)支持数据采样
创建表:
ENGINE MergeTree() PARTITION BY toYYYYMM(EventDate) ORDER BY (CounterID, EventDate, intHash32(UserID)) SAMPLE BY intHash32(UserID) SETTINGS index_granularity=8192 | |