50 lines
1.5 KiB
Markdown
50 lines
1.5 KiB
Markdown
---
|
||
title: "ClickHouse"
|
||
date: 2022-10-02T14:54:45+08:00
|
||
tags: ["clickhouse"]
|
||
categories: ["Learning", "StudyNotes"]
|
||
---
|
||
|
||
# ClickHouse
|
||
|
||
> 官网:[clickhouse.com](https://clickhouse.com/)
|
||
>
|
||
> 学习资料:[谷粒](https://www.gulixueyuan.com/my/course/445)
|
||
|
||
## 核心要点:
|
||
|
||
1. MergeTree引擎
|
||
2. OrderBy是主键
|
||
3. 分布式
|
||
4. Explain
|
||
5. 参数配置
|
||
6. 语法规则
|
||
7. 多表联查(join)
|
||
|
||
|
||
|
||
## 面试题
|
||
|
||
1.不支持真正的`delete/update`操作,不支持`transactions`(事物)
|
||
|
||
```text
|
||
OLAP引擎一般都不支持事物,ClickHouse的定位也是分析性数据库,而不是严格的关系型数据库,加入对于事物的支持,
|
||
必然会有锁,同时分布式事物的支持,会带来更复杂的实现,其中诸多因素,都会影响写入和查询的性能。
|
||
```
|
||
|
||
2.不支持高并发查询,官方建议`100 QPS`
|
||
|
||
```text
|
||
ClickHouse是并行计算,单个查询就可以跑满多个CPU核心,而不像MySQL单个查询单线程执行。
|
||
```
|
||
|
||
3.需要批量写入,频繁的单条写入会带来写入问题
|
||
|
||
```text
|
||
ClickHouse存储结构有点类LSM,每次的insert基本都会生成一个文件目录,后台线程Merge目录文件,如果频繁写入,
|
||
后台线程就会Merge不过来,产生`Too many parts`异常。建议每秒不超过一次写入,并且是Batch写入。
|
||
```
|
||
|
||
4.有限的SQL语法支持,JOIN语法也比较另类,暂时不支持窗口函数
|
||
|
||
5.稀疏索引的设计使得ClickHouse不适合做单行点查询 |