2016-02-23 3 views
0

Головки, я могу построить это только с помощью SQL.Переместить старые записи из таблицы mysql, когда новые появляются в

У меня есть таблица под названием Stream. Когда я получаю новые данные (пакетную вставку) из внешнего источника, они временно хранятся в потоке (engine = memory). Каждая строка в таблице Stream имеет временную метку. Мне нужно переместить любые данные, которые были старше 30 минут, в таблицу Истории (engine = myISAM), поскольку новые вставки происходят. Какой был бы лучший способ приблизиться к нему? Я вроде бы хочу использовать триггеры, но не знаю, является ли это оптимальным решением. Я думал о наличии триггера, который мог бы удалить старые данные из таблицы вставки. Однако, поскольку новые данные поступают в пакет с той же меткой времени, я не хотел прокручивать всю таблицу для каждой отдельной вставки. Я бы предпочел, чтобы он удалил, как только пакетная вставка завершится. Если бы я использовал язык программирования, такой как python для вставки, обновления, я мог бы использовать его для отслеживания состояния приложения. Но поскольку я не могу использовать ничего кроме SQL, я как бы ударил стену.

+0

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

ответ

0

Я предпочел бы использовать mysql, встроенный в task scheduler, и запланировать событие каждые 30 минут, чтобы переместить записи старше 30 минут в другую таблицу. Во время пакетной вставки вы можете приостановить событие, чтобы предотвратить выполнение операции архивации со вставкой партии.

Смежные вопросы