Czytałem wiele blogów, próbowałem google, ale nie znalazłem żadnej satysfakcji z żadnego rozwiązania. Mam następujące problemy:
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) )
Próbowałem rozwiązać ten problem, zwiększając innodb_pool_buffer_size
i wait_timeout
w moim.ini, ale nie zadziałało.
Zmieniłem silnik mojej tabeli pamięci podręcznej z Innodb na MyIasm. Problem zniknął, ale nie jest to idealne rozwiązanie. Silnik tabeli zostanie zmieniony po aktualizacji drupala. Ten problem nie ma wpływu na nic na stronie, ale nie chcę, aby tak się stało.
Jakieś rozwiązanie chłopaki?
7
performance
database
Sumit Madan
źródło
źródło
Odpowiedzi:
Przeczytaj i śledź ten post ; zakłada InnoDB.
W szczególności zapoznaj się z częścią dotyczącą dodania następujących elementów do pliku settings.php.
źródło
$databases['default']['default']['init_commands'] = array('isolation' => "SET SESSION tx_isolation='READ-COMMITTED'");
rozwiązało mój problem na moim lokalnym serwerze. Nie sprawdziłem tego jeszcze na serwerze na żywo. Potwierdź, że nie spowoduje to żadnego problemu w przyszłości, jeśli zostanie przez Ciebie przetestowany? Używam kickstart handlu.Najlepszym sposobem, aby raz na zawsze pozbyć się błędów zakleszczenia, jest moduł pamięci podręcznej zapytań bazy danych Asynchronous Prefetch .
Nie mogę tego wystarczająco polecić. Znakomicie napisany i świetny wzrost wydajności.
źródło