Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: INSERT БД  (Прочитано 655 раз)

Виктория

  • Пользователь
  • **
  • Сообщений: 87
    • Просмотр профиля
INSERT БД
« : 25 Августа 2020, 11:37:39 »
Здравствуйте.
При добавлении со SCADA в БД MySQL записей приходится очень долго ждать, так как формируется очередь из запросов.
Реализовываем BlackBox и при большом количестве записей приходится долго ждать пока они зафиксируются в БД.
Как можно ускорить процесс?
Каждые 500 мс записывается 50 записей, всего записей может быть больше 500 000.

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3000
    • Просмотр профиля
    • Simple-Scada
Re: INSERT БД
« Ответ #1 : 26 Августа 2020, 09:42:42 »
Здравствуйте.

Все пользовательские SQL-запросы, вызванные через RunSQL (или Table.RunSQL) ставятся в очередь и скада создаёт один отдельный поток для обработки очереди. Этот поток последовательно берёт запросы из очереди и выполняет их (не чаще чем каждые 50 мс, если это возможно). На скорость выполнения запросов влияют следующие факторы:
  • скорость жесткого диска;
  • производительность ПК;
  • загруженность СУБД в момент выполнения запроса;
  • сам запрос и то, насколько он "тяжелый";
Остальные факторы связаны со скадой и запросами. Например, если объединять множество "INSERT" запросов в один большой "INSERT INTO VALUES", то можно существенно увеличить производительность запросов и скорость их выполнения, и уменьшить величину очереди. Также можем добавить опцию, которая позволит задать количество потоков, которые скада создаёт для выполнения пользовательских запросов, это тоже может сильно ускорить массовые запросы.