Переезд с MysSQL в ClickHouse, как работать с буфером?

На проекте используется 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) Чтобы данные читались быстро
  • Вопрос задан
  • 802 просмотра
Пригласить эксперта
Ответы на вопрос 1
Ну так пересоздайте буфер с нужными вами параметрами скорости записи.
Вы же сами создали с максимальным временем жизни буфера 60 секунд.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы