mysql 保持行锁定的休眠连接

bksxznpy  于 2023-03-07  发布在  Mysql
关注(0)|答案(1)|浏览(115)

我有一个在C#中开发的应用程序,使用MySql作为数据库。有时,当插入或更新记录应用程序面临锁定超时过期错误。
我注意到有一些睡眠命令(显示完整的进程列表;),这些行正在锁定某些行。
为什么休眠命令锁定行???
在我的服务器上,睡眠命令在8小时后被删除,如中所示

show variables like 'wait_timeout';

以及

show variables like 'interactive_timeout';

是否可以通过以下查询将此超时设置为30秒?

SET @@GLOBAL.wait_timeout=30;
SET @@GLOBAL.interactive_timeout=30;

SET session wait_timeout=30;
SET session interactive_timeout=30;
bnlyeluc

bnlyeluc1#

我认为这是一个权衡。一方面,您可以从更长时间的连接池中节省性能。另一方面,您可能会遇到停电的情况(或bug)可能导致客户端放弃持有锁的连接。因此,从MySQL的Angular 来看,你有一个有效的连接,碰巧持有锁,它只会在8小时不活动(默认为wait_timeout周期)后关闭它。https://dba.stackexchange.com/a/324312/18720

相关问题