ClickHouse para usuários avançados em perguntas e respostas

Em abril, os engenheiros da Avito se reuniram para uma reuniĂŁo on-line com Alexei Milovidov, desenvolvedor-chefe da ClickHouse, e Kirill Shvakov, desenvolvedor de Golang da Integros. Eles discutiram como usamos o sistema de gerenciamento de banco de dados e que dificuldades estamos tendo.


Com base na reunião, coletamos um artigo com respostas de especialistas para as perguntas de nossos e do público-alvo sobre backups, compartilhamento de dados, dicionários externos, atualizações do driver Golang e da versão ClickHouse. Pode ser útil para desenvolvedores que já estão trabalhando ativamente com o Yandex DBMS e estão interessados ​​no presente e no futuro. A resposta padrão é Alexey Milovidov, salvo indicação em contrário.


Cuidado, abaixo do corte, muito texto. Esperamos que o conteĂşdo com perguntas o ajude a navegar.



ConteĂşdo



,   -. —    .

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