mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-20 08:40:50 +00:00
zhdocs: log_family.md and stripelog.md (#5107)
This commit is contained in:
parent
97c532c0f0
commit
8b24fed486
@ -1,4 +1,4 @@
|
||||
#Log Engine Family
|
||||
# Log Engine Family
|
||||
|
||||
These engines were developed for scenarios when you need to write many tables with the small amount of data (less than 1 million rows).
|
||||
|
||||
|
@ -1 +0,0 @@
|
||||
../../../en/operations/table_engines/log_family.md
|
42
docs/zh/operations/table_engines/log_family.md
Normal file
42
docs/zh/operations/table_engines/log_family.md
Normal file
@ -0,0 +1,42 @@
|
||||
# 日志引擎系列 {#table_engines-log_engine_family}
|
||||
|
||||
这些引擎是为了需要写入许多小数据量(少于一百万行)的表的场景而开发的。
|
||||
|
||||
这系列的引擎有:
|
||||
|
||||
- [StripeLog](stripelog.md)
|
||||
- [Log](log.md)
|
||||
- [TinyLog](tinylog.md)
|
||||
|
||||
## 共同属性 {#table_engines-log_engine_family-common_properties}
|
||||
|
||||
引擎:
|
||||
|
||||
- 数据存储在磁盘上。
|
||||
- 写入时将数据追加在文件末尾。
|
||||
- 不支持[突变](../../query_language/alter.md#alter-mutations)操作。
|
||||
- 不支持索引。
|
||||
|
||||
这意味着 `SELECT` 在范围查询时效率不高。
|
||||
|
||||
- 非原子地写入数据。
|
||||
|
||||
如果某些事情破坏了写操作,例如服务器的异常关闭,你将会得到一张包含了损坏数据的表。
|
||||
|
||||
## 差异 {#table_engines-log_engine_family-differences}
|
||||
|
||||
`Log` 和 `StripeLog` 引擎支持:
|
||||
|
||||
- 并发访问数据的锁。
|
||||
|
||||
`INSERT` 请求执行过程中表会被锁定,并且其他的读写数据的请求都会等待直到锁定被解除。如果没有写数据的请求,任意数量的读请求都可以并发执行。
|
||||
|
||||
- 并行读取数据。
|
||||
|
||||
在读取数据时,ClickHouse 使用多线程。 每个线程处理不同的数据块。
|
||||
|
||||
`Log` 引擎为表中的每一列使用不同的文件。`StripeLog` 将所有的数据存储在一个文件中。因此 `StripeLog` 引擎在操作系统中使用更少的描述符,但是 `Log` 引擎提供更高的读性能。
|
||||
|
||||
`TingLog` 引擎是该系列中最简单的引擎并且提供了最少的功能和最低的性能。`TingLog` 引擎不支持并行读取和并发数据访问,并将每一列存储在不同的文件中。它比其余两种支持并行读取的引擎的读取速度更慢,并且使用了和 `Log` 引擎同样多的描述符。你可以在简单的低负载的情景下使用它。
|
||||
|
||||
[来源文章](https://clickhouse.yandex/docs/en/operations/table_engines/log_family/) <!--hide-->
|
@ -1 +0,0 @@
|
||||
../../../en/operations/table_engines/stripelog.md
|
86
docs/zh/operations/table_engines/stripelog.md
Normal file
86
docs/zh/operations/table_engines/stripelog.md
Normal file
@ -0,0 +1,86 @@
|
||||
# StripeLog {#table_engines-stripelog}
|
||||
|
||||
该引擎属于日志引擎系列。请在[日志引擎系列](log_family.md)文章中查看引擎的共同属性和差异。
|
||||
|
||||
在你需要写入许多小数据量(小于一百万行)的表的场景下使用这个引擎。
|
||||
|
||||
## 建表 {#table_engines-stripelog-creating-a-table}
|
||||
|
||||
```
|
||||
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
|
||||
```
|
||||
|
||||
查看[建表](../../query_language/create.md#create-table-query)请求的详细说明。
|
||||
|
||||
## 写数据 {#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}
|
||||
|
||||
建表:
|
||||
|
||||
```sql
|
||||
CREATE TABLE stripe_log_table
|
||||
(
|
||||
timestamp DateTime,
|
||||
message_type String,
|
||||
message String
|
||||
)
|
||||
ENGINE = StripeLog
|
||||
```
|
||||
|
||||
插入数据:
|
||||
|
||||
```sql
|
||||
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 在查询数据时使用多线程。每个线程读取单独的数据块并在完成后独立的返回结果行。这样的结果是,大多数情况下,输出中块的顺序和输入时相应块的顺序是不同的。例如:
|
||||
|
||||
```sql
|
||||
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 │
|
||||
└─────────────────────┴──────────────┴───────────────────────────┘
|
||||
```
|
||||
|
||||
对结果排序(默认增序):
|
||||
|
||||
```sql
|
||||
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 │
|
||||
└─────────────────────┴──────────────┴────────────────────────────┘
|
||||
```
|
||||
|
||||
[来源文章](https://clickhouse.yandex/docs/en/operations/table_engines/stripelog/) <!--hide-->
|
Loading…
Reference in New Issue
Block a user