Мне нужна помощь, чтобы оптимизировать мои 3 запроса в один.
У меня есть 2 таблицы, первая содержит список серверов обработки изображений, которые я использую, поэтому разные серверы могут одновременно обрабатывать разные задания, поэтому у меня есть поле с именем quota , как показано ниже.
Имя первой таблицы, " img_processing_servers "
| id | server_url | server_key | server_quota |
| 1 | examp.uu.co | X0X1X2XX3X | 5 |
| 2 | examp2.uu.co| X0X1X2YX3X | 3 |
Вторая таблица регистрируется, если в данный момент на сервере выполняется задание
Вторая таблица, " img_servers_lock "
| id | lock_server | timestamp |
| 1 | 1 | 2020-04-30 12:08:09 |
| 2 | 1 | 2020-04-30 12:08:09 |
| 3 | 1 | 2020-04-30 12:08:09 |
| 4 | 2 | 2020-04-30 12:08:09 |
| 5 | 2 | 2020-04-30 12:08:09 |
| 6 | 2 | 2020-04-30 12:08:09 |
По сути, я хочу добиться, чтобы мои серверы изображений не превышайте go максимальную квоту и cra sh, поэтому я хотел бы объединить 3 запроса:
Выберите хотя бы один доступный сервер, который еще не достиг своей квоты, а затем вставьте заблокировать запись для него.
SELECT * FROM `img_processing_servers` WHERE
SELECT COUNT(timestamp) FROM `img_servers_lock` WHERE `lock_server` = id
! if the count is < than quota, go ahead and register use
INSERT INTO `img_servers_lock`(`lock_server`, `timestamp`) VALUES (id_of_available_server, now())
Как мне go создать этот одиночный запрос?
Моя цель - защитить серверы изображений от перегрузки.