ClickHouse for Advanced Users in Questions and Answers

4月,Avito工程师与ClickHouse首席开发人员Alexei Milovidov和Integros的Golang开发人员Kirill Shvakov进行了在线聚会。他们讨论了我们如何使用数据库管理系统以及我们遇到的困难。


在这次会议的基础上,我们收集了一篇文章,其中包含有关备份和数据重新分片,外部词典,Golang驱动程序和ClickHouse版本更新的问题和有关问题的专家解答。对于已经积极使用Yandex DBMS并对它的现在和未来感兴趣的开发人员,这可能会很有用。除非另有说明,否则默认答案是Alexey Milovidov。


注意,下切了很多文字。我们希望有问题的内容能帮助您导航。



内容



,   -. —    .

ClickHouse ,  — .   ?


ClickHouse , , optimize final ,   .

,   - , . , , ,     ,     ClickHouse.   , ?

,       ,   , .  ,  ClickHouse . ,  , - . ,  , ClickHouse . .


     ClickHouse?


  ,   optimize final,  , , , ,   ,   ?

  : - - . , , ?

    .         «.», . , .


,    ClickHouse,   . , . , ,   .


    . — .


  , :


  1. , — show create table.
  2.   ClickHouse — select * from table  .     TabSeparated. —   Native.

, . ,   ClickHouse. ,    MySQL  .


 ClickHouse   .   alter table freeze partition. alter table freeze — .


    , .   ,   .   .  -  ,  .


.  —   .  Directory-Detached   attach partition.   .


-  —   ,     . ,    «.». — , .


  .   ClickHouse ,   .   , . .  — LVM ,  — ZFS  Linux.


, - . , ,   .   , .  , .


 ?


 ClickHouse.   ?       .

- roll back ? ,   ,   ,   ?

  ,     , ,   ,   ?

  .   , issue    : « - , , ». , issue . , , ClickHouse. ,   20.3.


ClickHouse    — . ,   .   , ,     .


-,   , select, ,   . select   .


-,   —   .   .  :     ,   ,   .   ClickHouse   .


,  . ,   ClickHouse , .  - , , , alter drop column.   .


  20.3, , .  — , . ,  , .   , , , , - ,   .   , ,   .


. alter delete alter update, , . .


, ?


,   ?     . Btrfs ZFS  Linux LVM?

attach partition   , ClickHouse , . .  — MergeTree   ,   attach, alter. attach , alter table move partition.


 — Btrfs. ,   LVM, LVM , ext4, .  Btrts   . ,   ,     . ,   Btrfs  .


  ?


  . .    —  ClickHouse . , .   ,  ClickHouse .


   , .   ,   , . ,  ,  , .


, , —     alter table fetch partition. ,  , 2017    , —  - . , - .


  ,  .   , .  . , .   , .


  ,   ,   , .        —  .   select  Distributed ,   .


,   ,   . ,     , , .   ,   select  — , ,  — .


.     ,  - , ,  Distributed . ClickHouse optimize skip unused shards.     select   where , ,   .  ,     . , .


, . , , .


, lead system administrator : , , ,   . ,   ,   , . , ,   ,   -   .


: — , , . , .   ,   . , ,   .


, , , .   . ,   ,   .   ,  ,   .


    2019 . ,  2019 ,   2019  —   ,  - . .   , ad hoc , .


   .   , ,   . .


,   .   .  — .  — .  — ,  . , .


,      — .     ,  select.  select, ,   .


, CPU  - - . , ,   .   , ,   .   ,  . , .


:  , ,    .     , ClickHouse   .


,     , .     .     , ClickHouse: «   . -   - ,  ».


,   ,   ,  . .


:  ,   , , ,   .


  «.».  — , .   -. «.», — avito.ru,  ,   .


 — , .   ,   «». , «»   .   ,   .


,   , ?  ,  ClickHouse   «» —  .   , ,   ClickHouse .


 —  - .   Distributed , ,   .   ,  , ,   , .


. ,  ,     .  ,   - .   . avito.ru. , ,  —    .   .


.   , .     . .


?  — , .     .    —    -, ,   ,  MySQL.  —   .   .


      .   , ,       . , -   ,   .  , .    Distributed ,     . .


, ,   .     clickhouse-copier.


     — . , ,   ,   , 120      — 360 . ,   .  «.»  avito.ru,  120 .   .  , . Distributed ,   120 .


 —   .   ,   .


ClickHouse clickhouse-copier.   ?


, .  , , .  , .     .


,   .   , , , , .


, , .   Distributed , clickhouse-copier,   , , .     , ,   ,     .  , , .


clickhouse-copier?       . , clickhouse-copier     , ,    — insert select. , , , , -, . .


, .  ?


 2017 , .  ClickHouse. , . , ? .

 ,      , .  , , , . ,     , — .


    ?


 TTL   move to slow disk   . ,  cron,       ?

 , -      — . ,   .  ,  ,   .


.  —   .   - ,   . ,  — .


—  .   .     , .


  ClickHouse, ?


 - ClickHouse   , .   19.11  19.16 , ,  19.16  20.3.   ,  ?

«» .  — changelog. ,   .     . ,   , , , .


 —  ,  ,  — . . , , , ,     , .   . - ,  — .


 —       .   ClickHouse, .


20.3.4. 20   — 2020.   , , ,   .  — 20.3.  — 3 — ,  - .  ClickHouse - , .   20.4 ClickHouse .  — 20.3.4.  4 — -,   , - . 4 , .


, - . ,  -    . ,  -   , , . . -, ClickHouse .


  ClickHouse  , ClickHouse   — , 20.4.1 — ,     . ? ClickHouse, , , , . ClickHouse ,    — .


:   . - , , ClickHouse,   . .


  .   , ClickHouse.   —  Hetzner   , . ,  Ansible,   , —    .


?   ClickHouse ,    —  Docker,  LXC, , Ansible playbook,   . .   ,  - . ,   ,  —  . , .   — .


, senior backend engineer :     .   ClickHouse,   ,  .     .  -,   .  —  ,  , ,  ,     .    . , ,    .


: ,  «.».  600  - ,  360, .    —    . ? . . , .


- -. , ,  .


. ClickHouse.   ,   «.»,    , . , CI. .


.  . ,     . .   :     , , . . .  —   , .


- . : « , . , .  , . ». , , —  .   .


Kill query , . ?


, - , , ClickHouse. -  —    ,   . ,  CPU    , . ClickHouse   . : « , , process list, ».

kill. , .  , ClickHouse - , , , .     ,    ClickHouse, kill query . ? , kill query , .

.  , kill query .


Kill query   « , ».     . , . , , .   ,   . , .


 ,  - . , , , ,   , . ,     .   , . , , — ClickHouse.


?


,    item — .  — .   , 1K RPS  1K item’?

 ,   ,    — , , .


.  select 1 ClickHouse  ,   . ,  - key-value ,    .   , .  —  8192  .  64   1 .   . .


.  , .   , ,   . 1000 RPS ClickHouse ,   , .


ClickHouse   ,  —   .    , ,   .


, , ClickHouse   .   ?  — .    ,  ,    .   ,   64.


.   min compress block size, max compress block size. , , . ClickHouse — key-value .  — .


:  , . ,  ClickHouse - . ,  - , - , - . MySQL,  —  MySQL duplicate key, PostgreSQL conflict — . .


  , ClickHouse . ,   .


ClickHouse,  ?


 —   256  ,   ClickHouse 60—80 ,   —  130. ,   , ,  ?

, page cache   . , cached free — ,  — ,  .    ,  . , , .


, , ClickHouse   . uncompressed cache. config.xml uncompressed cache size  — ,  page cache.


, . — use uncompressed cache — .   , , . — -   . , .


storage_configuration ?


ClickHouse ,  data storage.    fast SSD.

,  volume hot memory. . select   , ,  ,  ? prewhere   ?

  , .
.


  . ,   — . tmpfs ,  -   .       , , .


-  , ,     -, . , . , . , . ClickHouse   ,   , , ZooKeeper . , , . .


     ,      page cache .   .   , ClickHouse fsync  insert.


    ,  . select , ,   , . prewhere ,  ,    .


Low Cardinality?


Low Cardinality . , . -,   , -,   .  — -,  — , .


 :   — ,   — -   Low Cardinality . fallback, , . , string, , , .


      ?


.  — , ClickHouse —   .   , Elasticsearch Sphinx. , , ,  Elasticsearch  ClickHouse.


? , Elasticsearch    ,  , . , ,  ClickHouse, ,    .   ,   -   , . ,      - .


 ClickHouse ,    .   . , , -   like. like  ClickHouse — like, .  — .


like — full scan. full scan  CPU,  .    ,   - , .   ,   ,    SSH .


.    — , . ClickHouse   -.   Arenadata , , .


, , :   - . ,    - , ,  .     , .


 ClickHouse   . , -,   ,     ,   ,   UTF-8  ASCII. , .


  . X like or X like . , .


— . -  ,   .


 ClickHouse   ?


,   . , max concurrent queries, ?

, ,  .   , , ,   .       .   ,   .


,     .   , .


 ,   .   «.» select count from hits, , . , , — ,     . .


,   , .  — force index by date. , . , .  — where event date between . , and or — or URL match. , URL .


, ClickHouse .  , . priority. priority ≠ 0,  - ,    , , ,   , ,   .


,   ,   .   , ,   , .


OS thread priority.   nice   Linux. , - . nice — ,  —     -19, CPU   , .


 — , .  — . , , , ClickHouse , .


, : -   — . , . .   . min execution speed —    , timeout before checking min execution speed — . , , , — .


.  ClickHouse , . ,  , CPU, ,  — , . , ,    .


?  ClickHouse . .     , ,   .  ,   .   .


?


,     . ,   , - , , . , , , ?

 ,   . page cache ,   , ,  , , .


- , ,  - .   pull request, , in join — .


,   .  —  . ,   , limit 10. , limit 10,10. . , ? , .


,  ClickHouse — ClickHouse Proxy.


:  ClickHouse Proxy . , . Proxy ,  , ,   . , Proxy ,  ClickHouse .


Nginx , .  Nginx , , , , .  ClickHouse Proxy .  ClickHouse, , . .


  ?


,  -  — , .    - ,   . - , .  ?

 —     . - « »,   ?

 , . ,   ,  ,     .


  . ,   , . “Ok”    insert, , .


 .     “Ok”, .  ClickHouse, , .   , , .  — .   , , .   .


,   .     ,   .


  .   , . , ,   . ,   ,   ,     .  —  insert.     .


.   . ,   , , , . , . , .


:     . , , ,   — . , , , . ,  — . .


? ,  —   ,  .  - , . , , ,   .  - ,  , .


API —  ClickHouse . API :    , , ,     .     ,   , . , ClickHouse.


  API -  —  ,   —  , . , .    - .   , .


ClickHouse . , ,  ?


ClickHouse , .   -   ,    . , .   ,  , ,  - .

  ClickHouse,   , ,   ?   ,  ClickHouse — . ,   .   .

, .     - 60  ClickHouse, ,   , , - . «.». , .   .


 «»  Grafana,   .   . , .   , Graphite-web. .   , Grafana, , .


  .  : CPU, , , .  — , ,  ,   MergeTree, , ,  ,  . ,  ,  .


: , . Grafana.  Grafana datasource, ClickHouse.  Grafana  ClickHouse.  ClickHouse  ,   .    Grafana   , . .


.  — , Grafana ,  «» ?


:   datasource,  ClickHouse, Altinity. , .  , «» - ClickHouse, . Altinity — , ClickHouse. , .  ,   Grafana,  — .


:  ClickHouse   .     . , , . , , . - , .


, ,    — ,   .  -, , . . , , : «, - Grafana?», : «   Grafana, “”, ,  . , , ».


,  OOM?


,   , ReplacingMergeTree.     .   - .

,     , OOM. , , ,  OOM. . .

,   , . , . - . ,  ,  ,    —   - ? ,   ,     , .

, «», , ,   . ,  . ,   ,  , , . ? , -  ,   - , - ,   ,   .  OOM  . , .

,    OOM,     .   .


: . , , , ,   , , , .     100  . 150 , 100 ,  50 ,  OOM .


  ,  OOM,  100  ?  ,   ?


: ,   .  , , - , ,   .  — , ,   . , , , , .


,  , « »  OOM. , ,  - , ,  —   .   .


Golang- ClickHouse?


Golang-, , ClickHouse. ClickHouse, .

. — Vertica. python-, Vertica. , , - . . , , «» — issue, .

. Golang- — Golang ClickHouse. - http , . ? - breaking changes ? issue?

:  — . , .


   issue, .  ,   .   , - .  - ClickHouse. , , ClickHouse . , .


  ClickHouse, - .  — , . , .


 Go, ,  Go.  — .  - , , - . CloudFlare   , -   , .  ClickHouse ,  .


- ,   ClickHouse   . issues .   , - . pull request - , .


. , , ClickHouse   . , , . ,  2   -  .


, . . - , , . «»   .


:     .  —   ,    Go. - , .


  .  — ,   ,   -, - .


  lazy_load. ?


lazy_load, . ,   .   . - ClickHouse , , ?

  ClickHouse, . ?

-,   system reload dictionaries. -,   — ,   , . ,   .


  . ,  MySQL. - select, select . .  — lazy_load.  — , ,   , system reload dictionary , . .   lazy_load, ClickHouse .


 — , .


 , system reload dictionaries   ,    ?


  system reload dictionaries.    — , . System reload dictionaries   ,   c  system reload dictionary.   ClickHouse?

. . , ClickHouse, . system reload dictionaries, , ,   .


  ClickHouse,  ?


 ,  , .   ClickHouse  ,    .

  ODBC. -   ClickHouse,  ?

 — credentials  odbc.ini,   ClickHouse ODBC Data Source Name.    —  MySQL,     .  ODBC — , .


:  


     .   ,         .



All Articles