今天突然发现truncate一个表都慢到不行,于是 SHOW PROCESSLIST

发现错误:waiting for table metadata lock
解决方法:查看information_schema.INNODB_TRX拥有事务的trx_mysql_thread_id,kill trx_mysql_thread_id回滚事务.

修改timeout默认值

mysql> show variables like 'innodb_lock_wait_timeout';

参数支持范围为Session和Global,且支持动态修改,所以可以通过两种方法修改;

2.1 通过语句修改

set innodb_lock_wait_timeout=100;

set global innodb_lock_wait_timeout=100;

注意global的修改对当前线程是不生效的,只有建立新的连接才生效

2.2 修改参数文件/etc/my.cnf

innodb_lock_wait_timeout = 50

三、当等待超过阀值时的情况

当锁等待超过设置时间的时候,就会报如下的错误;

ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

 

相关文章:

  • 2021-09-04
  • 2021-07-17
  • 2022-12-23
  • 2021-08-11
  • 2021-06-02
  • 2022-12-23
  • 2021-06-25
猜你喜欢
  • 2022-12-23
  • 2021-11-22
  • 2021-10-20
  • 2021-11-02
  • 2022-12-23
  • 2021-04-25
  • 2021-06-22
相关资源
相似解决方案