国际销售网站有哪些,wordpress反向代理 谷歌,营销管理培训课程,深圳沙井做网站公司日志引擎系列
这些引擎是为了需要写入许多小数据量#xff08;少于一百万行#xff09;的表的场景而开发的。
这系列的引擎有#xff1a;
StripeLogLogTinyLog
共同属性
引擎#xff1a; 数据存储在磁盘上。 写入时将数据追加在文件末尾。 不支持突变操作,也就是更新…日志引擎系列
这些引擎是为了需要写入许多小数据量少于一百万行的表的场景而开发的。
这系列的引擎有
StripeLogLogTinyLog
共同属性
引擎 数据存储在磁盘上。 写入时将数据追加在文件末尾。 不支持突变操作,也就是更新。 不支持索引。 这意味着 SELECT 在范围查询时效率不高。非原子地写入数据。 如果某些事情破坏了写操作例如服务器的异常关闭你将会得到一张包含了损坏数据的表。差异
Log 和 StripeLog 引擎支持 并发访问数据的锁。 INSERT 请求执行过程中表会被锁定并且其他的读写数据的请求都会等待直到锁定被解除。如果没有写数据的请求任意数量的读请求都可以并发执行。并行读取数据。 在读取数据时ClickHouse 使用多线程。 每个线程处理不同的数据块。Log 引擎为表中的每一列使用不同的文件。StripeLog 将所有的数据存储在一个文件中。因此 StripeLog 引擎在操作系统中使用更少的描述符但是 Log 引擎提供更高的读性能。
TinyLog 引擎是该系列中最简单的引擎并且提供了最少的功能和最低的性能。TinyLog 引擎不支持并行读取和并发数据访问并将每一列存储在不同的文件中。它比其余两种支持并行读取的引擎的读取速度更慢并且使用了和 Log 引擎同样多的描述符。你可以在简单的低负载的情景下使用它。
Log 与 TinyLog 的不同之处在于«标记» 的小文件与列文件存在一起。这些标记写在每个数据块上并且包含偏移量这些偏移量指示从哪里开始读取文件以便跳过指定的行数。这使得可以在多个线程中读取表数据。对于并发数据访问可以同时执行读取操作而写入操作则阻塞读取和其它写入。Log引擎不支持索引。同样如果写入表失败则该表将被破坏并且从该表读取将返回错误。Log引擎适用于临时数据write-once 表以及测试或演示目的。
TinyLog
最简单的表引擎用于将数据存储在磁盘上。每列都存储在单独的压缩文件中。写入时数据将附加到文件末尾。
并发数据访问不受任何限制
如果同时从表中读取并在不同的查询中写入则读取操作将抛出异常 如果同时写入多个查询中的表则数据将被破坏。 这种表引擎的典型用法是 write-once首先只写入一次数据然后根据需要多次读取。查询在单个流中执行。换句话说此引擎适用于相对较小的表建议最多1,000,000行。如果您有许多小表则使用此表引擎是适合的因为它比Log引擎更简单需要打开的文件更少。当您拥有大量小表时可能会导致性能低下但在可能已经在其它 DBMS 时使用过则您可能会发现切换使用 TinyLog 类型的表更容易。不支持索引。
在 Yandex.Metrica 中TinyLog 表用于小批量处理的中间数据。
stripelog
在你需要写入许多小数据量小于一百万行的表的场景下使用这个引擎。
建表
CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(column1_name [type1] [DEFAULT|MATERIALIZED|ALIAS expr1],column2_name [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],...
) ENGINE StripeLog写数据 {#table_engines-stripelog-writing-the-data}
StripeLog 引擎将所有列存储在一个文件中。对每一次 Insert 请求ClickHouse 将数据块追加在表文件的末尾逐列写入。
ClickHouse 为每张表写入以下文件
data.bin — 数据文件。index.mrk — 带标记的文件。标记包含了已插入的每个数据块中每列的偏移量。
StripeLog 引擎不支持 ALTER UPDATE 和 ALTER DELETE 操作。
读数据 {#table_engines-stripelog-reading-the-data}
带标记的文件使得 ClickHouse 可以并行的读取数据。这意味着 SELECT 请求返回行的顺序是不可预测的。使用 ORDER BY 子句对行进行排序。
使用示例 {#table_engines-stripelog-example-of-use}
建表
CREATE TABLE stripe_log_table
(timestamp DateTime,message_type String,message String
)
ENGINE StripeLog插入数据
INSERT INTO stripe_log_table VALUES (now(),REGULAR,The first regular message)
INSERT INTO stripe_log_table VALUES (now(),REGULAR,The second regular message),(now(),WARNING,The first warning message)我们使用两次 INSERT 请求从而在 data.bin 文件中创建两个数据块。
ClickHouse 在查询数据时使用多线程。每个线程读取单独的数据块并在完成后独立的返回结果行。这样的结果是大多数情况下输出中块的顺序和输入时相应块的顺序是不同的。例如
SELECT * FROM stripe_log_table┌───────────timestamp─┬─message_type─┬─message────────────────────┐
│ 2019-01-18 14:27:32 │ REGULAR │ The second regular message │
│ 2019-01-18 14:34:53 │ WARNING │ The first warning message │
└─────────────────────┴──────────────┴────────────────────────────┘
┌───────────timestamp─┬─message_type─┬─message───────────────────┐
│ 2019-01-18 14:23:43 │ REGULAR │ The first regular message │
└─────────────────────┴──────────────┴───────────────────────────┘对结果排序默认增序
SELECT * FROM stripe_log_table ORDER BY timestamp┌───────────timestamp─┬─message_type─┬─message────────────────────┐
│ 2019-01-18 14:23:43 │ REGULAR │ The first regular message │
│ 2019-01-18 14:27:32 │ REGULAR │ The second regular message │
│ 2019-01-18 14:34:53 │ WARNING │ The first warning message │
└─────────────────────┴──────────────┴────────────────────────────┘资料分享
ClickHouse经典中文文档分享
参考文章
ClickHouse(01)什么是ClickHouse,ClickHouse适用于什么场景ClickHouse(02)ClickHouse架构设计介绍概述与ClickHouse数据分片设计ClickHouse(03)ClickHouse怎么安装和部署ClickHouse(04)如何搭建ClickHouse集群ClickHouse(05)ClickHouse数据类型详解ClickHouse(06)ClickHouse建表语句DDL详细解析ClickHouse(07)ClickHouse数据库引擎解析ClickHouse(08)ClickHouse表引擎概况ClickHouse(09)ClickHouse合并树MergeTree家族表引擎之MergeTree详细解析ClickHouse(10)ClickHouse合并树MergeTree家族表引擎之ReplacingMergeTree详细解析ClickHouse(11)ClickHouse合并树MergeTree家族表引擎之SummingMergeTree详细解析ClickHouse(12)ClickHouse合并树MergeTree家族表引擎之AggregatingMergeTree详细解析ClickHouse(13)ClickHouse合并树MergeTree家族表引擎之CollapsingMergeTree详细解析ClickHouse(14)ClickHouse合并树MergeTree家族表引擎之VersionedCollapsingMergeTree详细解析ClickHouse(15)ClickHouse合并树MergeTree家族表引擎之GraphiteMergeTree详细解析