Prüfen Sie, ob Ihre Datenbank optimal eingestellt ist. Insbesondere die Isolierung der Transaktionen. Es ist keine gute Idee, die Variable innodb_lock_wait_timeout zu erhöhen.
Überprüfen Sie die Isolationsebene Ihrer Datenbanktransaktion im mysql-cli:
mysql> SELECT @@GLOBAL.tx_isolation, @@tx_isolation, @@session.tx_isolation;
+-----------------------+-----------------+------------------------+
| @@GLOBAL.tx_isolation | @@tx_isolation | @@session.tx_isolation |
+-----------------------+-----------------+------------------------+
| REPEATABLE-READ | REPEATABLE-READ | REPEATABLE-READ |
+-----------------------+-----------------+------------------------+
1 row in set (0.00 sec)
Sie können Verbesserungen erzielen, indem Sie die Isolationsebene ändern, z.B. READ COMMITTED statt REPEATABLE READ (InnoDB Defaults) verwenden.
mysql> SET tx_isolation = 'READ-COMMITTED';
Query OK, 0 rows affected (0.00 sec)
mysql> SET GLOBAL tx_isolation = 'READ-COMMITTED';
Query OK, 0 rows affected (0.00 sec)
mysql>
Versuchen Sie auch, SELECT FOR UPDATE nur zu verwenden, wenn dies erforderlich ist.