En avril, les ingénieurs d'Avito se sont réunis pour une réunion en ligne avec le développeur en chef de ClickHouse Alexei Milovidov et Kirill Shvakov, un développeur Golang d'Integros. Ils ont discuté de la façon dont nous utilisons le système de gestion de base de données et des difficultés que nous rencontrons.
Sur la base de la réunion, nous avons collecté un article avec des réponses d'experts à nos questions et celles de l'audience sur les sauvegardes, le partage de données, les dictionnaires externes, le pilote Golang et les mises à jour de la version ClickHouse. Il peut être utile aux développeurs qui travaillent déjà activement avec le SGBD Yandex et qui sont intéressés par son présent et son avenir. La réponse par défaut est Alexey Milovidov, sauf indication contraire.
Attention, sous la coupe beaucoup de texte. Nous espérons que le contenu avec des questions vous aidera à naviguer.

Contenu
- ClickHouse est constamment mis à jour, mais nos données ne le sont pas. Que dois-je faire avec ça?
- Quelles sont les meilleures pratiques pour sauvegarder les données de ClickHouse en ce moment?
- Sera-t-il possible d'organiser un décalage contrôlé des répliques dans les puits?
- Et si la structure de la table a changé?
- Quelles sont les meilleures pratiques pour le partage de données maintenant?
- ClickHouse clickhouse-copier. ?
- , . ?
- ?
- ClickHouse, ?
- Kill query , . ?
- ?
- ClickHouse, ?
- storage_configuration ?
- Low Cardinality?
- ?
- ClickHouse ?
- ?
- ?
- ClickHouse . , ?
- , OOM?
- Golang- ClickHouse?
- lazy_load. ?
- , system reload dictionaries , ?
- ClickHouse, ?
- :
, -. — .
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 — , .
:
. , .
