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