innodb_lock_wait_timeout

最近在业务支持中遇到特殊业务对innodb的这个锁等待超时(innodb_lock_wait_timeout)有比较严格的要求,特意查了下资料(主要还是参考的官方文档) 

 innodb_lock_wait_timeout指的是事务等待获取资源等待的最长时间,超过这个时间还未分配到资源则会返回应用失败;参数的时间单位是秒,最小可设置为1s(此时需要考虑应用端的频繁异常处理会消耗性能,不能设置过小),最大可设置1073741824秒以上(再大就会被截断了,不过这样业务一直死循环等待下去而不能将资源使用来做其他的事情也是很浪费的一件事情)

    一般默认安装时这个值是50(公司现有的安装貌似是默认100s的),这个值在InnoDB Plugin 1.0.2版本之前只能通过修改配置文件my.cnf并重启mysql实例生效;在 InnoDB Plugin 1.0.2版本之后可以做到动态的修改包括线程级别和全局的一个设置:
set innodb_lock_wait_timeout=100;   ---------session
set global innodb_lock_wait_timeout=100;   ---------global
注意global的修改对当前线程是不生效的,只有建立新的连接才生效

PS:如果事务开始前部分有其他操作而中途遇到锁等待超时则mysql端还需要回滚,如果频繁出现对DB消耗也不可小觑啊。

    其实在现有场景下多台机器同时更新某个资源有很多其他的方式,比如令牌环方式等。纯属yy~~~

文章参考:


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值