Ita*_*vka 8 mysql locking thread-priority
在某些情况下,当几个后端进程碰巧同时运行时(队列管理是别的,我可以这样解决,但这不是问题),我得到了 General error: 1205 Lock wait timeout exceeded; try restarting transaction ROLLING BACK
具有较低优先级的进程是锁定表的进程,因为它在高优先级之前几分钟开始.
如何优先查询已经运行的进程?
希望它足够清楚.
Lee*_*Lee 12
查询开始执行后,无法暂停/中断.唯一的例外是在数据库管理级别,您可以基本上强制查询停止(如果愿意,可以将其视为在Windows中终止正在运行的进程).但是你不想这样做,所以算了吧.
您最好的选择是使用LOW PRIORITY分块操作.基本上,这意味着如果对LOW PRIORITY的查询执行时间过长,请考虑在不在数据库中创建孤立数据或非法数据的情况下将其拆分为更快的方法.
一个非常基本的用例可以想象一个插入10,000个新行的插入.通过"分块"插入使其以较小的数据集(即一次500个)多次运行插入,每个插入将更快地完成,因此允许以更及时的方式执行任何非LOW PRIORITY操作.
如何
将某些内容设置为低优先级就像添加LOW_PRIORITY标志一样简单.
INSERT LOW_PRIORITY INTO xxx(a,b,c,) VALUES()
UPDATE LOW_PRIORITY xxx SET a=b
DELETE LOW_PRIORITY FROM xxx WHERE a="value"