Лучшие практики для многопоточных приложений, которые общаются с базой данных SQL - PullRequest
1 голос
/ 07 марта 2011

У меня 20 заводских машин, все задачи обработки. У меня есть адаптер базы данных, который связывается с базой данных MYSQL, в которой машины хранят всю свою информацию. Безопасно ли иметь на каждой панели фабричного компьютера свой адаптер базы данных и поток обновлений? Поток средства обновления постоянно непрерывно проверяет, совпадает ли текущий идентификатор задачи панели с текущим в базе данных, и если нет, то заполняет панель информацией о новой задаче.

Я не уверен, что слишком большое количество подключений увеличит накладные расходы или нет?

Ответы [ 3 ]

3 голосов
/ 07 марта 2011

RDBS предназначены для одновременного доступа нескольких клиентов. Это одна из их целей.

Так что я не думаю, что 20 или даже тысяча одновременных подключений вообще вызовут какие-либо проблемы.

1 голос
/ 07 марта 2011

Вместо того, чтобы все соединения выполняли одну и ту же задачу, создайте один процесс, который поддерживает список taskid (если он различен для всех машин) и проверяет текущий taskid в базе данных.если оно изменилось, то отправьте сообщение всем машинам (у которых есть изменение в их taskid), чтобы обновить их панели.Это позволит избежать ненужной нагрузки на базу данных, а также будет обрабатывать увеличение количества машин без какого-либо влияния.

1 голос
/ 07 марта 2011

Количество подключений в mysql контролируется системной переменной max_connections (общее количество разрешенных одновременных подключений) и max_user_connections (максимальное количество одновременных подключений на пользователя).Посмотрите на настройки вашего сервера и, возможно, измените их.Номера по умолчанию определенно больше, чем 20, хотя.

...