|
|
|
| Ситуация тaкая, раз в минуту на разных серверах запускается cron.
Который запускает php пишущий в одну и туже таблицу video_stats
Server 1
UPDATE video_stats v,video_stats_tmp1 s
SET v.views=v.views+s.views
WHERE v.video_id = s.video_id;
|
Server 2
UPDATE video_stats v,video_stats_tmp2 s
SET v.views=v.views+s.views
WHERE v.video_id = s.video_id;
|
Mysql падает на : Deadlock found when trying to get lock; try restarting transaction
Закрываю таблицу.
$dbapp->query('LOCK TABLES video_stats v WRITE');
$dbapp->query("
UPDATE video_stats v,video_stats_tmp1 s
SET v.views=v.views+s.views
WHERE v.video_id = s.video_id");
$dbapp->query('COMMIT');
$dbapp->query('UNLOCK TABLES');
|
После LOCK-a , UPDATE вообще не срабатывает и висит закрытая таблица.
Подскажите что вообще происходит ?
Почему 2 запроса одновременно не могут писать в одну таблицу ?
Что не правильного в использовании LOCK TABLES ?
Спасибо. | |
|
|