Несколько сценариев с одним и тем же MySQL-запросом, выполняющимся одновременно => Будут ли помехи?

0

Я хочу, чтобы одновременно выполнялось несколько скриптов, запущенных из cron. Они будут обновлять, скажем, 500 строк с уникальным идентификатором статуса для этого конкретного script для использования.

Если каждый script хватает один и тот же тип строк для обновления, и скрипты запускаются сразу, будут ли помехи между запросами одновременно запущены? Например, используя этот запрос:

UPDATE table SET status = <unique script ID> WHERE status = 0 LIMIT 500

Я буду получать одни и те же строки, обновляющиеся несколько раз? Я пытаюсь получить каждый script, чтобы получить уникальные строки. Я думал использовать sleep(), чтобы запросы выполнялись в разное время, но я не уверен, что это необходимо.

Спасибо.

Теги:

2 ответа

0
Лучший ответ

Я думаю, что запросы выполняются в последовательном порядке. Вы можете столкнуться с проблемой, если вы попросили, например, список строк для обновления, но это должно быть хорошо.

Сценарий проблемы: скрипты 1 и 2 запускаются почти в одно и то же время.

  • Script 1: SELECT id FROM table WHERE status = 0 LIMIT 500
  • Script 2: SELECT id FROM table WHERE status = 0 LIMIT 500
  • Script 1: таблица UPDATE SET status = 123 WHERE id IN (1,2,3...)
  • Script 2: таблица UPDATE SET status = 124 WHERE id IN (1,2,3...)

Ваш сценарий, однако, с одним запросом на script, предотвратит такие проблемы. Script 1 обновит все статусы, а Script 2 обнаружит, что у него нет обновлений.

0

Вы должны быть в порядке, если ваш основной механизм хранения имеет транзакционную семантику. InnoDB будет работать, но MyIsam не будет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню