mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-12 17:32:32 +00:00
84 lines
3.8 KiB
Markdown
84 lines
3.8 KiB
Markdown
---
|
||
slug: /zh/engines/table-engines/log-family/stripelog
|
||
---
|
||
# StripeLog {#stripelog}
|
||
|
||
该引擎属于日志引擎系列。请在[日志引擎系列](index.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
|
||
|
||
查看[建表](../../../engines/table-engines/log-family/stripelog.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 │
|
||
└─────────────────────┴──────────────┴────────────────────────────┘
|