Что изменится, если между апдейтами поставить временные задержки?

MikhailK

Новичок
Что изменится, если между апдейтами поставить временные задержки?

Есть скрипт, модифицирующий базу, который запускается по крону раз в полчаса и он достаточно тяжелый - время выполнения около трех секунд. Если пользователи в этот момент проводят свои операции с БД, возникает неприятная задержка, поскольку скрипт блокирует сразу все основные таблицы, из которых пользователи берут данные.

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

Я могу, конечно, сделать пять отдельных php-скриптов и всех их повесить на крон, но вот такой вариант имеет право на существование? Или я чего-то не понимаю?

PHP:
<?php
...

$query = "update table1... ";
mysql_query($query );
sleep(300);

$query = "update table2... ";
mysql_query($query );
sleep(300);

$query = "update table3... ";
mysql_query($query );
sleep(300);

$query = "update table4... ";
mysql_query($query );
sleep(300);

$query = "update table5... ";
mysql_query($query );

...
?>
Тип таблиц MyISAM
 

fixxxer

К.О.
Партнер клуба
> скрипт блокирует сразу все основные таблицы
> Тип таблиц MyISAM

В тред призывается Капитан Очевидность. :)
 

MikhailK

Новичок
Ну, если это намек на innoDB, то таким образом решится вопрос блокировок, но скорость выборки в целом снизится. Не вижу, зачем мне решать одну проблему и создавать себе новую.
 

fixxxer

К.О.
Партнер клуба
а ты пробовал, или действительно значительно снижается? ;)

вот если у тебя эти апдейты вообще единственные модифицирующие таблицу запросы - тогда еще верю в обоснованность myisam. И то - вопрос, что ты будешь делать, когда это будет занимать не по три секунды, а по тридцать.

Еще есть вариант с репликацией, кстати (хотя я совершенно не в курсе, как она себя ведет с MyISAM-ом).
 

MikhailK

Новичок
30 секунд, к счастью, не должно быть ))
но, в принципе, да
по уму, конечно, надо переводить на innoDB

с понедельника займусь
 
Сверху