SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 23.01.2019 19:00:28

andrey_55555
Участник
Зарегистрирован: 23.01.2019
Сообщений: 6

периодически ломается таблица в базе данных.

Здравствуйте,

Хочу попросить помощи, совета у Гуру MySql

Я написал парсер большого источника данных.

Источник парсится каждую минуту.
Парсинг выполняется в 9 потоков.

Результаты записываются в одну сводную таблицу.
Таблица MyIsam
Новые записи вставляются.
Существующие записи обновляются.

В сутки добавляется около 200 тыс. записей.
За 3 дня таблица разрастается до около 700 тыс. записей

Устаревшие записи (старше 3-х дней) переписываются в таблицу с историческими данными
(для каждого дня отдельная таблица).
Затем Устаревшие записи удаляются.
Сохранение и удаление Устаревших записей производится по 200 записей каждую минуту.

У меня периодически (примерно через неделю работы) ломается сводная таблица в базе данных.
Как мне кажется это из-за удаления Устаревших записей.


Я думаю что я почти все сделал неправильно smile

Вопрос: Что делать ?

У меня такие варианты решения:
1) Разбить таблицу на несколько по суткам, по часам и использовать MERGE
2) Использование партиций
3) Попытаться избавиться от UPDATE (использовать только INSERT)
4) Использовать InnoDB
5) Использовать memcached

Как Вы думаете какой самый правильный вариант ?
Или какой вариант принесет наибольший выиграш ?

Спасибо.

Неактивен

 

#2 23.01.2019 19:15:41

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: периодически ломается таблица в базе данных.

Первым я бы попробовал перейти на Innodb и, если только проблема сохранится, попробовал бы другие пути.

Неактивен

 

#3 23.01.2019 19:25:42

andrey_55555
Участник
Зарегистрирован: 23.01.2019
Сообщений: 6

Re: периодически ломается таблица в базе данных.

rgbeast написал:

Первым я бы попробовал перейти на Innodb и, если только проблема сохранится, попробовал бы другие пути.

Если честно, то у меня нет опыта работы с Innodb.

На сколько много надо буде переписывать запросы ?

Я думал разбить таблицы и использовать MERGE.
Так же думал попробовать таблицу с устаревшими данными переименовывать в таблицу с историческими данными.
А для MERGE создавать новую таблицу.

Или я не прав ?

Неактивен

 

#4 23.01.2019 19:32:47

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: периодически ломается таблица в базе данных.

А ломается — это как? Бьются ключи? Бьются данные? Что при этом происходит с сервером?
Есть ощущение, что Вы пытаетесь лечить следствие, а не причину.

Я бы начал с того, что разобрался бы, почему, собственно, ломается таблица. Это починит проблему.
Тем не менее, рекомендация Григория про InnoDB — в силе. 200 изменений в минуту — это 3 изменения
в секунду, точно хороший повод попробовать InnoDB.

Про объединение — над InnoDB можно сделать VIEW с UNION выборки из нескольких таблиц. Ну или
честный PARTITION.

Неактивен

 

#5 30.01.2019 20:45:55

andrey_55555
Участник
Зарегистрирован: 23.01.2019
Сообщений: 6

Re: периодически ломается таблица в базе данных.

Всем спасибо, кто принял участие в обсуждении.

Думаю рекомендации по поводу InnoDB правильные,
но я хотел отложить это на потом, что бы понять эффект от перехода на InnoDB

Но пока работает как описано ниже.


Для сводной таблицы сделал партицирование
Плюс
Сделал семь таблиц для каждого дня недели.

Данные пишу параллельно в общую сводную таблицу и в таблицу для дня недели.

Для общей сводной таблицы удаляю устаревшие партиции (TURNICATE)
Таблицы для дня недели переименовываю в исторические таблицы и создаю новые таблицы для соответствующего дня недели.

Работает уже несколько дней.
Все нормально.

Для информации алгоритм с удалением по 200 записей выполнялся около 5 сек.
Переименовывание таблиц и удаление устаревших партиций - выполняется доли секунды.



---
В планах попробовать сделать так.
Писать только в таблицы для дня недели и раз в пять минут собирать из них общую сводную таблицу.

Плюсы:
Работа с небольшими отельными таблицами.
Для общей сводной таблицы будут только операции по чтению


Не знаю насколько быстро будет раз в пять минут собирать общую сводную таблицу размером в 1.1 Гига

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson