我在mysql中创建了一个事件,用于从不同的表中收集数据,每5分钟就会重复一次。假设在某些情况下,事件可能需要超过5分钟才能完成(可能db正在缓慢运行,或者需要重新启动)。许多其他事件被同时触发,因此为了处理这个问题,我可以按照mysql手册使用读取锁。 end if;RELEASE_LOCK('ev_test');
所以我在mysql<
一些背景:我需要使用MySQL的命名锁特性,即GET_LOCK()和RELEASE_LOCK()函数。就MySQL服务器而言,只有获得锁的连接才能释放锁--因此,我必须确保在同一个连接中执行这两个命令,否则连接就会失效,以确保锁被释放。为了使事情更好,我创建了一个“锁定”上下文,如下所示:def mysql_named_lock(session, name, timeout):
"""Geta named mysql lock on