Стартовая страница › Форумы › Разработка и интеграция › Переполнение таблицы events для модуля экспорта
- В этой теме 7 ответов, 2 участника, последнее обновление 9 лет, 6 месяцев назад сделано
Mikhail.
-
АвторСообщения
-
28.11.2016 в 08:10 #3666
Kazam
УчастникСтолкнулся со следующей проблемой:
При заполнении таблицы events в базе данных mysql, наступает момент когда записей становиться слишком много и SELECT выполняется мучительно долго.Проявилось это на объеме 200 Мб событий в сутки (да, у нас нагруженное внедрение RS =)
Для себя решил использовать партицирование таблицы с событиями по 2 дня:
<code>CREATE TABLE</code>events(
datetimeDATETIME NOT NULL,
objnumINT(11) NOT NULL,
kpnumINT(11) NOT NULL,
paramidINT(11) NOT NULL,
cnlnumINT(11) NOT NULL,
oldcnlvalDOUBLE NOT NULL,
oldcnlstatSMALLINT(5) UNSIGNED NOT NULL,
newcnlvalDOUBLE NOT NULL,
newcnlstatSMALLINT(5) UNSIGNED NOT NULL,
checkedTINYINT(3) UNSIGNED NOT NULL,
useridINT(11) NOT NULL,
descrCHAR(100) NULL DEFAULT NULL,
dataCHAR(50) NULL DEFAULT NULL,
INDEXidx_events_datetime(datetime),
INDEXidx_events_objnum(objnum),
INDEXidx_events_cnlnum(cnlnum),
INDEXkpnum(kpnum),
INDEXparamid(paramid),
INDEXoldcnlstat(oldcnlstat),
INDEXnewcnlstat(newcnlstat)
)
COLLATE=’utf8_general_ci’
/*!50100 PARTITION BY LIST (DAY(datetime))
(PARTITION p00 VALUES IN (0,1) ENGINE = InnoDB,
PARTITION p02 VALUES IN (2,3) ENGINE = InnoDB,
PARTITION p04 VALUES IN (4,5) ENGINE = InnoDB,
PARTITION p06 VALUES IN (6,7) ENGINE = InnoDB,
PARTITION p08 VALUES IN (8,9) ENGINE = InnoDB,
PARTITION p10 VALUES IN (10,11) ENGINE = InnoDB,
PARTITION p12 VALUES IN (12,13) ENGINE = InnoDB,
PARTITION p14 VALUES IN (14,15) ENGINE = InnoDB,
PARTITION p16 VALUES IN (16,17) ENGINE = InnoDB,
PARTITION p18 VALUES IN (18,19) ENGINE = InnoDB,
PARTITION p20 VALUES IN (20,21) ENGINE = InnoDB,
PARTITION p22 VALUES IN (22,23) ENGINE = InnoDB,
PARTITION p24 VALUES IN (24,25) ENGINE = InnoDB,
PARTITION p26 VALUES IN (26,27) ENGINE = InnoDB,
PARTITION p28 VALUES IN (28,29) ENGINE = InnoDB,
PARTITION p30 VALUES IN (30,31) ENGINE = InnoDB) */;`28.11.2016 в 08:44 #3671
MikhailМодераторСпасибо за полезную информацию.
Сколько у Вас событий за сутки (не в МБ, а в штуках) и событий всего в таблице?
Rapid SCADA в состоянии отобразить такое количество событий в веб-приложении?Примеры для работы модуля экспорта в БД, действительно являются обобщенными. В конкретных случаях их нужно модифицировать для своих нужд.
28.11.2016 в 08:46 #3673
MikhailМодераторМожно ещё попробовать лишние индексы отключить, чтобы вставка в таблицу быстрее работала.
28.11.2016 в 11:13 #3677Kazam
УчастникМожно ещё попробовать лишние индексы отключить, чтобы вставка в таблицу быстрее работала.
Можно. но в таком случае поиск по большой таблице будет сильно затруднен (если конечно ищем не только по индексным полям).
В период с 00:00 по 13:10 (местного времени) событий в таблице 23 383.
У нас своя веб страница для событий:
28.11.2016 в 11:59 #3680
MikhailМодератор28.11.2016 в 12:02 #3683
MikhailМодераторТем более, что Вы наш постоянный автор 🙂
28.11.2016 в 20:55 #3686Kazam
УчастникОке =)
2 статьи уже есть, почему бы не написать третью.
А по теме: партицирование вещь.
одна таблица на двое суток это удобно.29.11.2016 в 14:41 #3687 -
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.