文章分类 其他 clickhouse 阅读数 : 233 阅读时长 : 9分钟
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
Ordinary 就是 ClickHouse 中默认引擎,如果不指定数据库引擎创建的就是Ordinary 数据库引擎,在这种数据库下面可以使用任意表引擎。创建时需要注意,Ordinary 首字母需要大写,不然会抛出异常。
MySQL 引擎用于将远程的 MySQL 服务器中的表映射到 ClickHouse 中,并允许对表进行INSERT 插入和 SELECT 查询,方便在 ClickHouse 与 MySQL 之间进行数据交换。
ClickHouse 中创建库使用 MySQL 引擎语法如下:
MySQL 的数据表有 InnoDB 和 MyISAM 存储引擎,不同的存储引擎提供不同的存储机制、索引方式等功能,也可以称之为表类型。在 ClickHouse 中也有表引擎。
表引擎在 ClickHouse 中的作用十分关键,直接决定了
ClickHouse 提供了大约 28 种表引擎,各有各的用途 纷繁复杂。ClickHouse 表引擎一共分为四个系列,分别是 Log 系列、MergeTree 系列、Integration 系列、Special 系列。其中包含了两种特殊的表引擎 Replicated、Distributed,功能上与其他表引擎正交,根据场景组合使用
Log 系列表引擎功能相对简单,主要用于快速写入小表(1 百万行左右的表),然后全部读出的场景,即一次写入,多次查询。
Log 系列表引擎包含:
数据被顺序 append 写到本地磁盘上。
不支持 delete、update 修改数据。
不支持 index(索引)。
不支持原子性写。如果某些操作(异常的服务器关闭)中断了写操作,则可能会获
得带有损坏数据的表。
insert 会阻塞 select 操作。当向表中写入数据时,针对这张表的查询会被阻塞,
直至写入动作结束。
TinyLog 是 Log 系列引擎中功能简单、性能较低的引擎。
示例:
相比 TinyLog 而言,StripeLog 数据存储会划分块,每次插入对应一个数据块,拥有更高的查询性能(拥有.mrk 标记文件,支持并行查询)
示例:
Log 引擎表适用于临时数据,一次性写入、测试场景。Log 引擎结合了 TinyLog 表引擎和 StripeLog 表引擎的长处,是 Log 系列引擎中性能最高的表引擎。
示例:
Memory 表引擎直接将数据保存在内存中,ClickHouse 中的 Memory 表引擎具有以下特点:
示例:
注意:”Memory”表引擎写法固定,不能小写。同时创建好表 t_memory 后,在对应的磁盘目录/var/lib/clickhouse/data/newdb 下没有“t_memory”目录,基于内存存储,当重启 ClickHouse 服务后,表 t_memory 存在,但是表中数据全部清空。
Merge 引擎 (不要跟 MergeTree 引擎混淆) 本身不存储数据,但可用于同时从任意多个其他的表中读取数据,这里需要多个表的结构相同,并且创建的 Merge 引擎表的结构也需要和这些表结构相同才能读取。
Distributed 是== ClickHouse 中 分 布 式 引 擎== , 之 前 所 有 的 操 作 虽 然 说 是 在ClickHouse 集群中进行的,但是实际上是在 node1 节点中单独操作的,与 node2、node3无关,使用分布式引擎声明的表才可以在其他节点访问与操作。
Distributed 引擎和 Merge 引擎类似,本身不存放数据,功能是在不同的 server上把多张相同结构的物理表合并为一张逻辑表。
示例:
上面的语句中使用了 ON CLUSTER 分布式 DDL(数据库定义语言),这意味着在集群的每个分片节点上,都会创建一张 Distributed 表,这样便可以从其中任意一端发起对所有分片的读、写请求。
更多【clickhouse-ClickHouse--04--数据库引擎、Log 系列表引擎、 Special 系列表引擎】相关视频教程:www.yxfzedu.com