Simple-Scada forum
Simple-Scada 2 => Ваши вопросы => Тема начата: Виктория от 25 Августа 2020, 11:37:39
-
Здравствуйте.
При добавлении со SCADA в БД MySQL записей приходится очень долго ждать, так как формируется очередь из запросов.
Реализовываем BlackBox и при большом количестве записей приходится долго ждать пока они зафиксируются в БД.
Как можно ускорить процесс?
Каждые 500 мс записывается 50 записей, всего записей может быть больше 500 000.
-
Здравствуйте.
Все пользовательские SQL-запросы, вызванные через RunSQL (или Table.RunSQL) ставятся в очередь и скада создаёт один отдельный поток для обработки очереди. Этот поток последовательно берёт запросы из очереди и выполняет их (не чаще чем каждые 50 мс, если это возможно). На скорость выполнения запросов влияют следующие факторы:
- скорость жесткого диска;
- производительность ПК;
- загруженность СУБД в момент выполнения запроса;
- сам запрос и то, насколько он "тяжелый";
Остальные факторы связаны со скадой и запросами. Например, если объединять множество "INSERT" запросов в один большой "INSERT INTO VALUES", то можно существенно увеличить производительность запросов и скорость их выполнения, и уменьшить величину очереди. Также можем добавить опцию, которая позволит задать количество потоков, которые скада создаёт для выполнения пользовательских запросов, это тоже может сильно ускорить массовые запросы.