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,   . , . , ,   .
    . — .
  , :
- , — show create table.
 -   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 — , .
:  
     .   ,         .
