Im April trafen sich die Avito-Ingenieure zu einem Online-Treffen mit dem ClickHouse-Chefentwickler Alexei Milovidov und Kirill Shvakov, einem Golang-Entwickler von Integros. Sie diskutierten, wie wir das Datenbankverwaltungssystem verwenden und welche Schwierigkeiten wir haben.
Basierend auf dem Meeting haben wir einen Artikel mit Expertenantworten auf unsere und Publikumsfragen zu Backups, Datenresharding, externen Wörterbüchern, dem Golang-Treiber und ClickHouse-Versionsaktualisierungen zusammengestellt. Dies kann für Entwickler nützlich sein, die bereits aktiv mit Yandex DBMS arbeiten und sich für dessen Gegenwart und Zukunft interessieren. Die Standardantwort lautet Alexey Milovidov, sofern nicht anders angegeben.
Achtung, unter dem Schnitt viel Text. Wir hoffen, dass der Inhalt mit Fragen Ihnen beim Navigieren hilft.

Inhalt
- ClickHouse wird ständig aktualisiert, unsere Daten jedoch nicht. Was soll man damit machen?
- Was sind derzeit die besten Methoden zum Sichern von Daten aus ClickHouse?
- Wird es möglich sein, eine kontrollierte Verzögerung von Repliken in den Schächten zu organisieren?
- Was ist, wenn sich die Tabellenstruktur geändert hat?
- Was sind jetzt die Best Practices für das Resharding von Daten?
- 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 — , .
:
. , .
