Я читал несколько блогов, пытался гуглить, но не нашел удовлетворения ни от одного решения. У меня есть следующие проблемы:
PDOException: SQLSTATE[40001]: Serialization failure: 1213 Deadlock found when trying to get lock; try restarting transaction: DELETE FROM {cache_field} WHERE (cid LIKE :db_condition_placeholder_0 ESCAPE '\\') ; Array ( [:db_condition_placeholder_0] => field\_info:% ) in cache_clear_all() (line 163 of \includes\cache.inc).
PDOException: SQLSTATE[HY000]: General error: 1205 Lock wait timeout exceeded; try restarting transaction: SELECT 1 AS expression FROM {sessions} sessions WHERE ( (sid = :db_condition_placeholder_0) AND (ssid = :db_condition_placeholder_1) )
Я пытался решить эту проблему путем увеличения innodb_pool_buffer_size
и wait_timeout
в my.ini, но не сработало.
Я изменил движок своей кеш-таблицы с Innodb на MyIasm. Проблема ушла, но это не идеальное решение. Движок стола будет изменен после обновления drupal. Эта проблема не затрагивает ничего на сайте, но я не хочу, чтобы это произошло.
Любое решение, ребята?
7
performance
database
Сумит Мадан
источник
источник
Ответы:
Прочитайте и следуйте этому посту ; это предполагает InnoDB.
В частности, смотрите раздел, в котором говорится, что нужно добавить следующее в файл settings.php.
источник
$databases['default']['default']['init_commands'] = array('isolation' => "SET SESSION tx_isolation='READ-COMMITTED'");
решил мою проблему на локальном сервере. Я еще не проверил это на живом сервере. Пожалуйста, подтвердите, что это не даст никаких проблем в будущем, если оно будет проверено вами? Я использую коммерческий кикстарт.Лучший способ раз и навсегда избавиться от ошибок взаимоблокировки - это модуль Asynchronous Prefetch Database Query Cache .
Я не могу рекомендовать это достаточно. Блестяще написано и большой выигрыш в производительности.
источник