Переполнение таблицы events для модуля экспорта

Стартовая страница Форумы Разработка и интеграция Переполнение таблицы events для модуля экспорта

Просмотр 8 сообщений - с 1 по 8 (из 8 всего)
  • Автор
    Сообщения
  • #3666
    Kazam
    Участник

    Столкнулся со следующей проблемой:
    При заполнении таблицы events в базе данных mysql, наступает момент когда записей становиться слишком много и SELECT выполняется мучительно долго.

    Проявилось это на объеме 200 Мб событий в сутки (да, у нас нагруженное внедрение RS =)

    Для себя решил использовать партицирование таблицы с событиями по 2 дня:

    
    <code>CREATE TABLE</code>events

    (
    datetime DATETIME NOT NULL,
    objnum INT(11) NOT NULL,
    kpnum INT(11) NOT NULL,
    paramid INT(11) NOT NULL,
    cnlnum INT(11) NOT NULL,
    oldcnlval DOUBLE NOT NULL,
    oldcnlstat SMALLINT(5) UNSIGNED NOT NULL,
    newcnlval DOUBLE NOT NULL,
    newcnlstat SMALLINT(5) UNSIGNED NOT NULL,
    checked TINYINT(3) UNSIGNED NOT NULL,
    userid INT(11) NOT NULL,
    descr CHAR(100) NULL DEFAULT NULL,
    data CHAR(50) NULL DEFAULT NULL,
    INDEX idx_events_datetime (datetime),
    INDEX idx_events_objnum (objnum),
    INDEX idx_events_cnlnum (cnlnum),
    INDEX kpnum (kpnum),
    INDEX paramid (paramid),
    INDEX oldcnlstat (oldcnlstat),
    INDEX newcnlstat (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) */;`

    #3671
    Mikhail
    Модератор

    Спасибо за полезную информацию.
    Сколько у Вас событий за сутки (не в МБ, а в штуках) и событий всего в таблице?
    Rapid SCADA в состоянии отобразить такое количество событий в веб-приложении?

    Примеры для работы модуля экспорта в БД, действительно являются обобщенными. В конкретных случаях их нужно модифицировать для своих нужд.

    #3673
    Mikhail
    Модератор

    Можно ещё попробовать лишние индексы отключить, чтобы вставка в таблицу быстрее работала.

    #3677
    Kazam
    Участник

    Можно ещё попробовать лишние индексы отключить, чтобы вставка в таблицу быстрее работала.

    Можно. но в таком случае поиск по большой таблице будет сильно затруднен (если конечно ищем не только по индексным полям).

    В период с 00:00 по 13:10 (местного времени) событий в таблице 23 383.

    У нас своя веб страница для событий:
    FrontendEvents

    • Ответ изменён 9 лет, 6 месяцев назад пользователем Kazam.
    • Ответ изменён 9 лет, 6 месяцев назад пользователем Kazam.
    #3680
    Mikhail
    Модератор

    Если у Вас есть желание, то давайте добавим информацию о Вас в раздел Проекты. А также присылайте статью о Вашем внедрении для раздела Статьи. Это послужит для Вашей компании дополнительной рекламой, а для проекта Rapid SCADA — интересным примером использования.

    #3683
    Mikhail
    Модератор

    Тем более, что Вы наш постоянный автор 🙂

    #3686
    Kazam
    Участник

    Оке =)
    2 статьи уже есть, почему бы не написать третью.
    А по теме: партицирование вещь.
    одна таблица на двое суток это удобно.

    #3687
    Mikhail
    Модератор

    Скриншот выше можно добавить на страницу Проекты в проект «Система учета тепловой энергии Орджоникидзевского района Екатеринбурга»?

Просмотр 8 сообщений - с 1 по 8 (из 8 всего)
  • Для ответа в этой теме необходимо авторизоваться.