mysql怎么设置超时时间

mysql怎么设置超时时间,第1张

  MySQL超时时间设置:使用Druid可以配置。

具体设置方法,代码如下:

<!-- 超过时间限制是否回收 -->

<property name="removeAbandoned" value="true" />

<!-- 超时时间;单位为秒。180秒=3分钟 -->

<property name="removeAbandonedTimeout" value="180" />

<!-- 关闭abanded连接时输出错误日志 -->

<property name="logAbandoned" value="true" />

1.客户端和服务端建立tcp连接超时:connect_timeout

2.客户端的连接长期处于空闲连接(sleep)状态超时:interactive_timeout和wait_timeout

3.服务端等待读取客户端发来的数据超时:net_read_timeout

4.服务端等待把数据写给客户端(客户端没有接收)的超时:net_write_timeout

5.事务等待获取行锁(row lock)超时,返回应用失败:innodb_lock_wait_timeout

6.如果innodb_lock_wait_timeout超时自动回滚事务的话(0或1):innodb_rollback_on_timeout

7.事务等待获取MDL锁(metadata locks)超时:lock_wait_timeout

8.stop slave命令的执行超时时间(被回放的大事务阻塞住):rpl_stop_slave_timeout

9.主从复制间,主从hello包的超时时间:slave_net_timeout

10.当innodb_flush_log_at_trx_commit=0/2时,刷新redo log的频率:innodb_flush_log_at_timeout

问题:Lock wait timeout exceededtry restarting transaction

MySQL版本:5.6.44

官方文档

意思是:InnoDB在锁等待超时过期时报告此错误。等待时间过长的语句被回滚(而不是整个事务)。如果SQL语句需要等待其他事务完成的时间更长,则可以增加 innodb_lock_wait_timeout 配置选项的值;如果太多长时间运行的事务导致锁定问题并降低繁忙系统上的并发性,则可以减少该选项的值。

锁等待超时,可能是出现了死锁,也可能有事务长时间未提交

库:information_schema

表:

查看各表信息

innodb_trx 表

innodb_locks 表

innodb_lock_waits 表

processlist 表

模拟出现死锁

准备一张只有主键的表:t_test (id)

Navicat 新建查询1

Navicat 新建查询2

检查是否锁表

查询当前正在执行的事务

查询当前出现的锁

查询锁等待对应的关系

查询等待锁的事务所执行的SQL

最后,事务2 等待锁超时报错: Lock wait timeout exceededtry restarting transaction

通过事务线程ID查找进程信息

win10 查看端口信息


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7222681.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-03
下一篇 2023-04-03

发表评论

登录后才能评论

评论列表(0条)

保存