根据MySQL 5.1 的手册,第 13.7.6.4 节 KILL 语法,当您kill
建立连接时,会为该线程设置特定于线程的终止标志。然后将不时检查该标志,即使在一些长时间运行的查询期间也是如此,以便它可以中断查询。
有没有办法指示线程在某种分隔的临界区内不检查kill 标志?
我正在寻找的是这样的:
BEGIN IGNORE_KILLS;
-- if this thread is killed here, it will simply ignore it
END IGNORE_KILLS;
-- here, the thread would be able to tell if someone tried to kill it previously
假设它不存在,或者有人可以为我提供更好的解决方案,让我解释一下我为什么要它。
我有一个应用程序必须对插入到表中的行做出反应,并且它必须是可扩展的。根据MySQL 专家 Baron Schwartz的说法,不应该一直轮询数据库,他建议使用SELECT SLEEP(...)/KILL
.
问题是,在等待连接select sleep(...)
被通知(通过被杀死)它有工作要做之后,我想保证,在它的工作期间(我在上面称之为关键部分),它不会停止做即使在杀手线程发疯并再次杀死它的情况下,它也应该这样做。