具有最小功能的轻量级引擎。当需要快速写入许多小表(最多约100万行),并在以后整体读取他们时,该类引擎最适合。该类型的引擎有:
1共同属性
-
数据存储在磁盘上;
-
写入时将数据追加在文件末尾;
-
不支持突变操作;
-
不支持索引;
-
意味着select在范围查询时效率不高
-
非原子地写入数据
如果某些事情破坏了写操作,如服务器的异常关闭,你将会得到一张包含了损坏数据的表
2.差异
Log与StripeLog引擎支持:
- 并发访问数据的锁;
insert请求执行过程中会被锁定,且其他的读写数据的请求都会等待直到锁定被解除。
如果没有写请求,任意数量的读请求都可以并发执行
- 并行读取数据。
在读取数据时,clickhouse使用多线程。每个线程处理不同的数据块,
Log引擎为表中的每一列使用不同的文件,stripelog将所有的数据存储在一个文件中,因此stripeLog引擎在操作系统中使用较少的描述符,但Log引擎提供更高的读性能。
TinyLog引擎是该系列中最简单的引擎且提供了最少的功能和最低的性能。TinyLog不支持并行读取和并发数据访问,并将每一列都存储在不同的文件中,比其余2个引擎支持并且读取的引擎的读取速度更慢,且使用和Log引擎同样多的描述符。一般在负载很低的时候使用
3.TinyLog
以列文件的形式保存在磁盘上,不支持索引,没有并发控制。一般保存少量数据的小表,在生产环境上作用有限,可以平时练习测试用。
并发数据访问不受任何限制:
---如果同时从表中读取的同时进行写入,则读取操作将抛出异常
---如果写入多个查询中的表,则数据将被破坏
该表引擎的典型用法是write-once:首先只写入一次数据,然后根据需要多次读取。
create table test_tinelog(
id Int16,
name String
) engine=TinyLog;