@clickhouse_ru

Страница 176 из 723
Igor
20.06.2017
15:56:07
внешние словари вроде целиком данные все подсасывают каждые N секунд, в зависимости от лайфтайма и того, запрашивали их или нет а потом просто в оперативке хранятся в течение своего TTL (так происходит в случае с flat, hashed) а для cache описывается, как доп.запросы будут происходить https://clickhouse.yandex/docs/ru/single/index.html#cache

Alexey
20.06.2017
16:29:34
INSERT INTO table2 SELECT * FROM table1 DB::Exception: Memory limit (for query) exceeded: would use 9.31 GiB (attempt to allocate chunk of 524288 bytes), maximum: 9.31 GiB.

и что делать с большими таблицами?

через внешний файл только?

Google
Igor
20.06.2017
16:30:25
ну можно кусками инсертить же

INSERT INTO table2 SELECT * FROM table WHERE date BETWEEN '2017-05-01' AND '2017-05-31';

Alexey
20.06.2017
16:31:18
ну... закат солнца вручную конечно

но для CH походу это норма и фича

ща попробуем так

papa
20.06.2017
16:35:12
INSERT INTO table2 SELECT * FROM table1 DB::Exception: Memory limit (for query) exceeded: would use 9.31 GiB (attempt to allocate chunk of 524288 bytes), maximum: 9.31 GiB.
сам запрос у вас потоковый, но если у вас тяжелые строки, а в случае select * так может быть, то нужно чтобы за один раз в память читалось не слишком много строк.

Alexey
20.06.2017
16:36:05
ну и ограничение делать вот по редложению Игоря?

papa
20.06.2017
16:37:24
я бы покрутил что-то вроде max_block_size

Alexey
20.06.2017
16:44:26
нда... суточные данные не всегда проходят

либо еще дробить либо как-то системно

значит max_block_size, говорите

а этот параметр можно на уровне сесси установить?

но как-то из описания не очень вериться, что это поможет

Google
Alexey
20.06.2017
16:53:26
перечитал еще раз

да похоже оно

спасибо за наводку

Alexey
20.06.2017
16:57:53
спасибо за наводку
Ещё поставьте max_threads = 1. Для INSERT SELECT без фильтрации большее количество не имеет смысла.

Igor
20.06.2017
16:58:16
извините что фигню посоветовал (

Alexey
20.06.2017
16:58:23
ды не почему

норм

просто у меня данные вылезают

в другом случае может и прокатило бы

но это более системный вариант походу

ща нащупаю размеры оптимальные и запущу

Alexander
20.06.2017
17:15:01
А decompress=1 какие компрессии поддерживает? Через gzip прогнать ок?

Alexey
20.06.2017
17:19:46
а вот при таком массовом insert-е как merge работает? Я правильно ожидаю, что после копирования новая таблица будет иметь больше part-ов чем исходная (в которой достаточно старые данные)?

и как следствие больше размер и менее эффективная

Alexey
20.06.2017
17:23:15
А decompress=1 какие компрессии поддерживает? Через gzip прогнать ок?
decompress=1 поддерживает только внутренний формат сжатия. Для использования gzip, указывать его не нужно. Вместо этого просто используйте HTTP заголовок. https://github.com/yandex/ClickHouse/blob/master/dbms/tests/queries/0_stateless/00302_http_compression.sh

а вот при таком массовом insert-е как merge работает? Я правильно ожидаю, что после копирования новая таблица будет иметь больше part-ов чем исходная (в которой достаточно старые данные)?
Да, после копирования таблица может иметь больше part-ов. Мержи работают примерно так же, как при обычных INSERT-ах, хотя и более оптимально если вставляются уже сортированные данные (это так при INSERT SELECT без преобразований, и с выставленной настройкой max_threads=1).

Alexey
20.06.2017
17:25:45
у меня изменился немного PK

это преобразование?

Alexey
20.06.2017
17:26:37
Да. Если сортированность данных по PK меняется, то будет несколько менее оптимально по CPU.

Alexey
20.06.2017
17:27:08
спасибо за пояснения!

Google
Alexey
20.06.2017
17:30:16
ну так писал миловидов их начальник по clickhouse
Да, отчёты Метрики строятся налету из неагрегированных данных, хранящихся в ClickHouse. Это работает одинаково, как для свежих, так и для старых данных. Отдельных примочек для свежих данных нет, кэшей нет, предагрегации тоже нет.

Maksim
20.06.2017
17:32:56
эм.. тогда я точно не понимаю в чем дело

а какой сервер? может какие-то настройки сервера отличные от тех что по умолчанию?

Александр
20.06.2017
17:33:27
Я нормальное распределение считаю по 500 млн буквально за 50мс )

Maksim
20.06.2017
17:33:44
у меня много группировок по строковым типам

Александр
20.06.2017
17:33:59
У нас три шарда по 32 ядра, 96 гигов оперативы и по 300 гигов ссд. Это виртуалки.

Может есть смысл сделать внешний словарь и перевести строки в числа? Что-то типа предварительной подготовки данных

Maksim
20.06.2017
17:35:55
ну это только некоторые из полей можно так сделать. но не все к сожалению

Александр
20.06.2017
17:36:18
Мы периодически перекладываем данные из монги в КХ, но из монги берем только нужные данные. Предварительно я вычисляю идентификатор пользователя и идентификатор "сайта"

Maksim
20.06.2017
17:36:20
сервер 4 ядра и 8 гигов ram. это конечно в 10к раз хуже вашего

Александр
20.06.2017
17:36:50
Ну я первый раз гонял КХ на сервере с один ядром и 4 гигами оперативы :) Навалил туда 2.5 ярда )

Это на одной машине, без шардов. Скорость выполнения запросов даже параллельных была достаточно большая.

Maksim
20.06.2017
17:37:30
магия

Александр
20.06.2017
17:39:35
Действительно странно

Maksim
20.06.2017
17:45:34
вот элементарный пример

SELECT count(*) FROM xxx

Google
Maksim
20.06.2017
17:46:25
7 сек чтобы посчитать количество ... это норм?

Александр
20.06.2017
17:47:30
http://img.facedsid.ru/6ea9j.jpg

papa
20.06.2017
17:48:38
не тормозит

Maksim
20.06.2017
17:50:38


это в 4 раза медленее. но это запрос на сервере. а если отправлять запрос на порт 8123 то 7 сек

и у вас 18 rows/s у меня почему-то 3 rows/s

диски ssd

Александр
20.06.2017
17:53:11
У нас сложная бизнес-логика и нам приходится какие то данные агрегировать и "кешировать", но данные мы выбираем асинхронно, порядка 10-11 одновременных запросов в КХ. Таких инстансов, делающих асинхронные запросы на данный момент 50 штук.

Все летает

Maksim
20.06.2017
17:54:18
но на примере обычного теста я отстаю в 4 раза. это как объяснить?)

Александр
20.06.2017
17:54:40
Возможно все таки кол-во потоков играет определенную роль :)

Попробуйте поднять мониторинг на том же графите с карбоном и посмотрите куда у вас что течет

Maksim
20.06.2017
17:56:27
есть мониторинг

только что смотреть. памяти хватает. проц съедают потоки clickhouse-server. место есть

iops не упирается в диск

вот еще раз выполнил запрос



уже почти 0.5

в среднем от 0.2 до 0.5

Vladimir
20.06.2017
18:00:02
А ещё к слову, мне тут что то подумалось, что индекс же должен влиять в том числе на скорость group by, даже если нет фильтрации. Разве нет?

Google
Александр
20.06.2017
18:00:44
Я, к сожалению не спец по кишкам КХ, но я думаю должен

Я долго с PK игрался, пока оптимальный вариант не подобрал

В том числе и группировки стали шустрее работать

Vladimir
20.06.2017
18:01:40
Ну логика говорит что должен влиять в общем :)

papa
20.06.2017
18:04:01
группировки по ключу?

Александр
20.06.2017
18:04:50
У меня да, используются в группировках колонки, которые в ключе есть, но иногда и без них данные группирую

Просто по этим же колонкам приходится еще фильтр делать

В ключе у меня 4 колонки всего

Дата, идентификатор сайта, идентификатор пользователя и действие которое пользователь совершил

Когда перекладываем данные, то они частично сортированы и пишутся пачками по 100 000 строк в 200 потоков :) Потолок в 10млн строк в минуту не пробил, т.к. монга быстрее не отдает

papa
20.06.2017
18:08:59
а сколько у вас дисков, от 100->200 потоков было какое-то увеличение в скорости?

Александр
20.06.2017
18:09:36
У нас по одному диску на каждом шарде. Скорость увеличивалась по мере увеличения потоков на запись

Причем чуть ли не линейно )

papa
20.06.2017
18:10:36
а, вы не в одну машину пишете

Александр
20.06.2017
18:18:01
В три

Точнее в одну распределенную таблицу

А данные уже по шардам расползаются сами

Сейчас из-за бага с broken pipe пишу по серверам напрямую, но там не больше 10к строк раз в 10 минут )

Большими порциями мы архивные данные гоняем в КХ, такое практикуем раз в месяц где то

Alexey
20.06.2017
18:43:35
Сейчас есть release candidate. В stable ещё не попало, так как много заморочек с выкладкой на наши серверы. Из последнего тега testing уже можете собирать.

Александр
20.06.2017
18:44:23
А инструкции по сборке deb пакетов есть у вас?

Страница 176 из 723