mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-13 19:14:30 +00:00
89 lines
5.1 KiB
Markdown
89 lines
5.1 KiB
Markdown
|
# StripeLog
|
|||
|
|
|||
|
Движок относится к семейству движков Log. Смотрите общие свойства и различия движков в статье [Семейство Log](log_family.md).
|
|||
|
|
|||
|
Движок разработан для сценариев, когда необходимо записывать много таблиц с небольшим объемом данных (менее 1 миллиона строк).
|
|||
|
|
|||
|
## Создание таблицы {#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
|
|||
|
```
|
|||
|
|
|||
|
Смотрите подробное описание запроса [CREATE TABLE](../../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/ru/operations/table_engines/stripelog/) <!--hide-->
|