[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: какова последовательность выполнения запросов mysq
major28
Здравствуйте!
У меня есть два скрипта. Первый отправляет запрос на сервер 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 и в нем уже последовательно все сделай. Типа Обновил - Перенес ...

Много зависит от объема БД, поэтому под конкретные задачи - делают конкретные скрипты smile.gif

Спустя 25 минут, 33 секунды (10.07.2011 - 12:58) DySprozin написал(а):
INSIDIOUS
;;Да, возможно.
а разве блокировки нету? (;

Спустя 9 часов, 38 минут, 58 секунд (10.07.2011 - 22:37) ИНСИ написал(а):
Цитата
а разве блокировки нету? (;

Точно не могу сказать, в практике такого еще не было smile.gif Ноооо. Могу лишь высказать свои мысли:

В обычном сайте, пользователи могут сразу вытаскивать товары с таблицы, также и обновлять. Блокировок не ставится. В данном случае - 2 разных скрипта, с разными задачами.

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

Спустя 37 минут, 21 секунда (10.07.2011 - 23:15) DySprozin написал(а):
хм... а если первый скрипт по завершении вызывает второй? rolleyes.gif

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

И в данном случае могут возникнуть проблемы, если интервал между запуском с крона маленький smile.gif

Поэтому я предложил: Обновил - перенес smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.