Помощь с переездом с MysSQL на ClickHouse
1 000 руб. за проект
•
безналичный расчёт, электронные деньги
На проекте используется 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
Некоторые таблицы разрослись до >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
В заказе есть исполнитель
При переводе заказа из архивного в актуальный, текущий исполнитель будет снят с задачи.
Выберите тип сделки
С безопасной сделкой вы всегда сможете вернуть средства, если что-то пойдет не так. С простой сделкой вы самостоятельно договариваетесь с исполнителем об оплате и берете на себя решение конфликтов.