Затем делает длительную операцию (до 3 минут)
Затем может удалить или изменить ряд записей
Другой поток добавляет в эту таблицу новые записи и периодически выдаёт такие ошибки
Вычитал, что для InnoDB блокируются используемые в запросе строки (в случае, если набор этих строк может быть однозначно определен значениями первичного ключа — иначе, блокируется вся таблица).SQLSTATE[HY000]: General error: 1205 Lock wait timeout exceeded; try restarting transaction. The SQL statement executed was
SQLSTATE[40001]: Serialization failure: 1213 Deadlock found when trying to get lock; try restarting transaction.
Похоже, что мой запрос блокирует таблицу, т.к. первичный ключ не использую:
Код: Выделить всё
$domains = Domain::model() //default order by dt_update ASC
->limit(450) // Полчаса после обновления домен не трогаем
->findAll('dt_update<"'.date('Y-m-d H:i:s',strtotime('-30 minutes')).'"');
$request = $source = array();
foreach($domains as $domain)
$request[] = $domain->dm_sef;
// Освободить ресурсы
// Длительная операция
// Правки в БД (быстро)