Как синхронизировать данные таблицы MySQL InnoDB с таблицей памяти

Мы используем движок MYSQL InnoDB для операций вставки и обновления, чтобы повысить производительность запросов, мы рассматриваем возможность использования таблицы памяти для хранения последних данных, например. данные за последние два месяца.

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

Может кто знает как синхронизировать данные без перезапуска MySQL?


person Scarlett    schedule 06.04.2012    source источник
comment
Звучит как комплексное решение. Вы сначала пытались настроить MySQL, чтобы использовать больше памяти для кеша?   -  person Joachim Isaksson    schedule 06.04.2012
comment
Да, я выделил 6 ГБ памяти для поддержки таблицы памяти MySQL.   -  person Scarlett    schedule 06.04.2012


Ответы (1)


Обычно это делается с помощью триггера. Моя первая идея состояла в том, чтобы сделать это в двух частях.

1) Создайте триггеры для вставки, обновления и удаления (если это когда-либо произойдет) в таблице innodb, которые вызывают такое же изменение в таблице памяти. Убедитесь, что никакая логика не зависит от того, что определенные строки были удалены из таблицы памяти, она будет содержать последние 2 месяца, а затем еще несколько.

2) Создайте фоновое задание, чтобы очистить таблицу памяти от старых данных. Если у вас высокая нагрузка, подумайте о частом задании, которое откусывает несколько старых строк за раз.

Другим решением было бы разделить таблицу innodb по времени, а затем убедиться, вы включаете что-то вроде where time > subdate(now(), interval 2 month)

person Andreas Wederbrand    schedule 06.04.2012
comment
Спасибо за быстрый ответ и отличные предложения! Я попробую ваши две идеи и сравню производительность. - person Scarlett; 06.04.2012