тестов сервиса поднимать локально небольшой кластер из двух нод, накатывать миграции. Столкнулся с тем что миграции идут медленно (около 20 секунд). Таблиц и мат вьюшек в сумме не больше двадцати.
Я пробросил внутрь контейнеров рам диск в /var/lib/clickhouse, но ситуацию это не улучшило.
Ранее подобная схема работала для постгреса (на одном инстансе). Хочется провернуть и с кликхаусом.
Может ли быть проблема в zookeeper или чисто в clickhouse ?
Есть ли вариант ускорить миграции?
конфиг https://pastebin.com/3Rm55SZZ
это не ускорить через "один инстанс" что конкретно медленно идет? замеряли?
что такое миграции? пример дайте
-------------------------------------------------------------- ALTER TABLE db.site_state_sum_by_hour on cluster default ADD COLUMN decontaminating UInt64 clickhouse-0-0 | 2022.06.10 12:17:52.249863 [ 53 ] {30396df0-c5e7-4787-a2db-8394f703ce60} <Debug> DDLWorker: Processing tasks clickhouse-0-0 | 2022.06.10 12:17:52.252776 [ 66 ] {f90bc782-c0f5-4ef0-918f-31cdf8007526} <Debug> executeQuery: Query pipeline: clickhouse-0-0 | DDLQueryStatusInputStream clickhouse-0-0 | clickhouse-0-0 | 2022.06.10 12:17:52.255504 [ 53 ] {30396df0-c5e7-4787-a2db-8394f703ce60} <Debug> DDLWorker: Processing task query-0000000058 (ALTER TABLE db.site_state_sum_by_hour ON CLUSTER default ADD COLUMN `decontaminating` UInt64 ) clickhouse-0-0 | 2022.06.10 12:17:52.258491 [ 53 ] {30396df0-c5e7-4787-a2db-8394f703ce60} <Debug> DDLWorker: Executing query: ALTER TABLE db.site_state_sum_by_hour ADD COLUMN `decontaminating` UInt64 clickhouse-0-0 | 2022.06.10 12:17:52.296857 [ 55 ] {} <Debug> db.site_state_sum_by_hour (ReplicatedMergeTreeQueue): Pulling 1 entries to queue: log-0000000001 - log-0000000001 clickhouse-0-0 | 2022.06.10 12:17:52.300565 [ 55 ] {} <Debug> db.site_state_sum_by_hour (ReplicatedMergeTreeQueue): Pulled 1 entries to queue. clickhouse-0-0 | 2022.06.10 12:17:52.304074 [ 94 ] {} <Information> db.site_state_sum_by_hour: Metadata changed in ZooKeeper. Applying changes locally. clickhouse-0-0 | 2022.06.10 12:17:52.307642 [ 94 ] {} <Information> db.site_state_sum_by_hour: Applied changes to the metadata of the table. Current metadata version: 2 clickhouse-0-0 | 2022.06.10 12:17:53.024009 [ 53 ] {30396df0-c5e7-4787-a2db-8394f703ce60} <Debug> DDLWorker: Task query-0000000058 has already been executed by leader replica (clickhouse%2D0%2D1:9000) of the same shard. clickhouse-0-0 | 2022.06.10 12:17:53.027875 [ 53 ] {30396df0-c5e7-4787-a2db-8394f703ce60} <Debug> DDLWorker: Waiting a watch clickhouse-0-0 | 2022.06.10 12:17:53.153106 [ 66 ] {f90bc782-c0f5-4ef0-918f-31cdf8007526} <Information> executeQuery: Read 2 rows, 116.00 B in 0.916 sec., 2 rows/sec., 126.63 B/sec. clickhouse-0-0 | 2022.06.10 12:17:53.154185 [ 66 ] {f90bc782-c0f5-4ef0-918f-31cdf8007526} <Debug> MemoryTracker: Peak memory usage (for query): 53.27 KiB. clickhouse-0-0 | 2022.06.10 12:17:53.154832 [ 66 ] {} <Debug> MemoryTracker: Peak memory usage (for query): 53.27 KiB. clickhouse-0-0 | 2022.06.10 12:17:53.154960 [ 66 ] {} <Information> TCPHandler: Processed in 0.919 sec. clickhouse-0-0 | 2022.06.10 12:17:53.158337 [ 66 ] {} <Information> TCPHandler: Done processing connection. clickhouse-0-0 | 2022.06.10 12:17:53.162922 [ 67 ] {} <Debug> TCPHandler: Connected Golang SQLDriver version 1.1.0, revision: 54213, database: db, user: default. clickhouse-0-0 | 2022.06.10 12:17:53.165778 [ 67 ] {9207c04f-6eca-4f01-b886-930e728f1ea6} <Debug> executeQuery: (from 172.23.0.1:58638) ALTER TABLE db.dis_site_state_sum_by_hour on cluster default ADD COLUMN decontaminating UInt64 clickhouse-0-0 | 2022.06.10 12:17:53.179244 [ 53 ] {30396df0-c5e7-4787-a2db-8394f703ce60} <Debug> DDLWorker: Processing tasks clickhouse-0-0 | 2022.06.10 12:17:53.183481 [ 67 ] {9207c04f-6eca-4f01-b886-930e728f1ea6} <Debug> executeQuery: Query pipeline: clickhouse-0-0 | DDLQueryStatusInputStream clickhouse-0-0 | clickhouse-0-0 | 2022.06.10 12:17:53.184920 [ 53 ] {30396df0-c5e7-4787-a2db-8394f703ce60} <Debug> DDLWorker: Processing task query-0000000059 (ALTER TABLE db.dis_site_state_sum_by_hour ON CLUSTER default ADD COLUMN `decontaminating` UInt64 ) clickhouse-0-0 | 2022.06.10 12:17:53.186911 [ 53 ] {30396df0-c5e7-4787-a2db-8394f703ce60} <Debug> DDLWorker: Executing query: ALTER TABLE db.dis_site_state_sum_by_hour ADD COLUMN `decontaminating` UInt64 clickhouse-0-0 | 2022.06.10 12:17:53.187041 [ 53 ] {8a6967d7-ef7f-4194-bacf-34cd4addfef1} <Debug> executeQuery: (from 0.0.0.0:0, user: ) /* ddl_entry=query-0000000059 */ ALTER TABLE db.dis_site_state_sum_by_hour ADD COLUMN `decontaminating` UInt64
clickhouse-0-0 | 2022.06.10 12:17:53.190273 [ 53 ] {8a6967d7-ef7f-4194-bacf-34cd4addfef1} <Debug> DDLWorker: Executed query: ALTER TABLE db.dis_site_state_sum_by_hour ADD COLUMN `decontaminating` UInt64 clickhouse-0-0 | 2022.06.10 12:17:53.193780 [ 53 ] {8a6967d7-ef7f-4194-bacf-34cd4addfef1} <Debug> DDLWorker: Waiting a watch clickhouse-0-0 | 2022.06.10 12:17:53.296803 [ 67 ] {9207c04f-6eca-4f01-b886-930e728f1ea6} <Information> executeQuery: Read 2 rows, 116.00 B in 0.131 sec., 15 rows/sec., 888.05 B/sec. clickhouse-0-0 | 2022.06.10 12:17:53.297774 [ 67 ] {9207c04f-6eca-4f01-b886-930e728f1ea6} <Debug> MemoryTracker: Peak memory usage (for query): 26.55 KiB. clickhouse-0-0 | 2022.06.10 12:17:53.298826 [ 67 ] {} <Debug> MemoryTracker: Peak memory usage (for query): 26.55 KiB. clickhouse-0-0 | 2022.06.10 12:17:53.298935 [ 67 ] {} <Information> TCPHandler: Processed in 0.133 sec. clickhouse-0-0 | 2022.06.10 12:17:53.300495 [ 67 ] {} <Information> TCPHandler: Done processing connection. clickhouse-0-0 | 2022.06.10 12:17:53.303949 [ 66 ] {} <Debug> TCPHandler: Connected Golang SQLDriver version 1.1.0, revision: 54213, database: db, user: default. я пытался проанализировать что именно идет долго, но вот лог добвления поля в таблицу. я не понимаю что уходит целая секунда.
это ON CLUSTER и DDL Worker секунда уходит скорее всего на общение с zookeeper clickhouse-0-0 | 2022.06.10 12:17:53.024009 [ 53 ] {30396df0-c5e7-4787-a2db-8394f703ce60} <Debug> DDLWorker: Task query-0000000058 has already been executed by leader replica (clickhouse%2D0%2D1:9000) of the same shard. clickhouse-0-0 | 2022.06.10 12:17:53.027875 [ 53 ] {30396df0-c5e7-4787-a2db-8394f703ce60} <Debug> DDLWorker: Waiting a watch попробуйте миграции только на одном контейнере запускать
в один контейнер положить два инстанса кликхауса и зукипер?
зачем? нет, ALTER TABLE только в одном контейнере запускайте а не на всех
попробовал, логично, что при запуске без on cluster запрос отработал за 0.006sec против 0.015sec c on cluster. Но все равно 0.015 это не секунда. Как я понимаю, я упираюсь в зукипер и надо копать в сторону его производительности?
я что-то не понял когда 1 секунда превратилась в 0.015 для ON CLUSTER? там же по логам у вас 0.7 секунды вообще.... ну можно и в zookeeper RAM диск пробросить попробовать. но не уверен что сильно ускорит кстати если соберете docker-compose такой с ramdisk то опубликуйте если не трудно? сделаете доброе дело
по логам у меня было начало в 2022.06.10 12:17:52.249863, окончание - 2022.06.10 12:17:53.298826. то есть примерно секунда. если все таки соберу, то буду иметь в виду и выложу. но пока я все руками делал, тем более на макоси, которая не поддерживает tmpfs. а публиковать куда?)
gist.github.com достаточно =) и тут ссылку разместить...
спасибо за помощь!
Обсуждают сегодня