---
title: "ClickHouse 表引擎之 Buffer"
date: 2020-10-08T18:08:00+08:00
lastmod: 2020-10-08T18:08:00+08:00
tags: []
categories: ["clickhouse"]
---

## Buffer 表引擎简介
- 只写内存，无持久化存储
- 缓冲高并发写入，满足条件时，Buffer 表会把数据刷新到目标表

## 创建 Join 引擎表
- 声明
    ```sql
    ENGINE = Buffer(
        database,
        table,
        num_layers,
        min_time,
        max_time,
        min_rows,
        max_rows,
        min_bytes,
        max_bytes
    )
    ```

- database: 目标表所在数据库
- table: 目标表名
- num_layers: 刷新数据到目标表时开启的线程数，官方建议 16
- min_time 和 max_time: 时间条件，单位秒
- min_rows 和 max_rows: 数据行数条件
- min_bytes 和 max_bytes: 数据体量条件，单位字节
- 所有最小阈值都满足时，触发刷新
- 至少一个最大阈值满足时，触发刷新
- 如果一批数据的行数大于 max_rows，或体量大于 max_bytes，则数据直接写入目标表
- 各线程(num_layers)单独计算刷新规则

