Додайте свій проект безкоштовно і почніть отримувати пропозиції від фрілансерів-виконавців вже через хвилини після публікації!

Нужна консультация по переезду с MySQL на 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) Чтобы данные читались быстро 



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


Зробити ставку!

Замовник не бажає робити передплату? Оплату через Сейф допоможе уникнути можливого шахрайства.
  1. ставка прихована фрілансером
  2. 1 день420 ₴
    Олег Леприк
     831   19  1

    Может стоит попробовать для начала ускорить саму запись в MySQL? Что вы слышали про HandlerSocket?
    https://habr.com/ru/post/239637/

    Немного о себе:

    Знаю: PHP, MySQL, JavaScript, jQuery, Angular 2+, HTML5, CSS3, Linux, nginx
    Использую: Smarty, Sphinx, mod_rewrite, memcache, собственная CMS
    Работал с WordPress, PrestaShop, OpenCart, Zend Framework, phpBB3, IP.Board
    Хороший опыт front-end: верстка, анимация и динамические сайты.

    Доступен в онлайне с 12-00 до 23-00
    Оплата по-проектно или почасовая ставка ($15/час)

    Skype: iamleprik
    E-mail: [email protected]
    Телефон: +380674660520

    Україна Київ | 23 січня о 09:21 |