У меня есть два скрипта. Первый отправляет запрос на сервер mysql для обновления данных в таблице(примерно 1000 записей), второй отправляет запрос для перемещения из этой же таблицы в таблицу историй старых записей. Оба скрипта дергаются кроном. Вопрос следующий, может ли быть такое что при запуске скриптов одновременно запрос который отправит первый скрипт не успеет до конца выполниться как уже начнет выполняться запрос второго скрипта? Грубо говоря возможен ли такой вариант что первый мой скрипт не успеет обновить все записи в то время как уже второй скрипт начнет переносиьт записи в историю? Или каждый последующий запрос всегда будет ждать пока не наступит конец предыдущего запроса?
Спустя 10 минут, 6 секунд (10.07.2011 - 12:11) DySprozin написал(а):
major28
Цитата ( http://mysql.ru/docs/man/Internal_locking.html ) |
Метод блокирования, используемый в MySQL для блокировок записи (WRITE), работает следующим образом: Если на данной таблице нет никаких блокировок, то на нее накладывается блокировка записи. В противном случае запрос на данную блокировку ставится в очередь блокировок записи. Метод блокирования, используемый в MySQL для блокировок чтения (READ), работает следующим образом: Если на данной таблице нет блокировок записи, то на нее накладывается блокировка чтения. В противном случае запрос на данную блокировку ставится в очередь блокировок чтения. При освобождении текущей блокировки становится возможной следующая блокировка для потоков из очереди блокировок записи, затем для потоков из очереди блокировок чтения. Это означает, что, если таблица подвергается многочисленным обновлениям, то команды SELECT будут ожидать, пока обновления не закончатся. |
как-то так (;
Спустя 21 минута, 39 секунд (10.07.2011 - 12:33) ИНСИ написал(а):
Цитата |
Грубо говоря возможен ли такой вариант что первый мой скрипт не успеет обновить все записи в то время как уже второй скрипт начнет переносиьт записи в историю? |
Да, возможно.
А зачем делать 2 отдельных скрипта. Сделай 1 и в нем уже последовательно все сделай. Типа Обновил - Перенес ...
Много зависит от объема БД, поэтому под конкретные задачи - делают конкретные скрипты

Спустя 25 минут, 33 секунды (10.07.2011 - 12:58) DySprozin написал(а):
INSIDIOUS
;;Да, возможно.
а разве блокировки нету? (;
;;Да, возможно.
а разве блокировки нету? (;
Спустя 9 часов, 38 минут, 58 секунд (10.07.2011 - 22:37) ИНСИ написал(а):
Цитата |
а разве блокировки нету? (; |
Точно не могу сказать, в практике такого еще не было

В обычном сайте, пользователи могут сразу вытаскивать товары с таблицы, также и обновлять. Блокировок не ставится. В данном случае - 2 разных скрипта, с разными задачами.
Первый скрипт пока будет обходить первые 100 000 записей, уже запуститься второй и может выполнить свою задачу быстрее. Все зависит от задач скрипта и интервала между запусками.
Спустя 37 минут, 21 секунда (10.07.2011 - 23:15) DySprozin написал(а):
хм... а если первый скрипт по завершении вызывает второй?

Спустя 2 минуты, 6 секунд (10.07.2011 - 23:17) ИНСИ написал(а):
Цитата |
хм... а если первый скрипт по завершению вызывает второй? rolleyes.gif |
И в данном случае могут возникнуть проблемы, если интервал между запуском с крона маленький

Поэтому я предложил: Обновил - перенес
