Помощь с переездом с MysSQL на ClickHouse

1 000 руб. за проект • безналичный расчёт, электронные деньги
16 января 2019, 16:00 • 2 отклика • 63 просмотра
На проекте используется MySQL, в секунду ~500 инсертов и ~200 селектов.
Некоторые таблицы разрослись до >1 млрд записей, некоторые таблицы в результате неизвестно чего повредились и мускул стал несколько раз в день падать.
Собрав все пролемы в кучу и предположив, что нагрузка будет только расти - мы решили перейти на ClickHouse.

Переписали скрипт, перенесли данные из MySQL и запустили всё на на полную мощь. В итоге сайт начал тормозить, в логах кликхауса появляться ошибки что слишком много запросов идёт на запись (примерно так).

В MySQL у меня были такие же проблемы, когда диск не выдерживал такого объёма записей и всё начинало лагать. Решил это с помощью конфигов:

innodb_flush_method = O_DIRECT innodb_flush_log_at_trx_commit = 2

После изучения документации кликхауса я понял, что для решения этой проблемы нужно использовать движок Buffer.
Далее я выполнил такой запрос:

CREATE TABLE `buffer_log` AS `log` ENGINE = Buffer(`default`, `log`, 16, 10, 60, 1000, 10000, 10000000, 100000000);

Далее я все инсерты повесил на таблицу buffer_log, нагрузка на проц и диск упала, но появилась новая проблема.

SELECT запросы у меня идут с небуферизованной таблицы log, а там они соответственно появляются не сразу и появляется задержка около минуты. Меня это не устраивает, нужен полный realtime как был на MySQL.

Далее я попробовал чтение делать тоже из таблицы буфера, но сайт снова стал тормозить. Покопав документацию я увидел, что при записи в буфер блокируется вся таблица.

Как это исправить?

Мне нужно решить всего две проблемы:
1) Чтобы данные писались быстро
2) Чтобы данные читались быстро

Пишите в телеграм @rakovskiy28