Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
实现mysql锁定_Mysql - Fatal编程技术网

实现mysql锁定

实现mysql锁定,mysql,Mysql,我想使用mysql行级锁。我锁不上整张桌子。我希望避免两个进程同时为服务器处理两条不同的消息。 我想我可以有一张桌子叫: server\u lock如果一个进程开始在服务器上工作,它将在表中插入一行 这种方法的问题在于,如果应用程序崩溃。我们需要手动取下锁。 如果应用程序崩溃,有没有办法释放行级锁和锁 编辑 我用C++作为语言。 我的应用程序类似于消息队列。但区别在于有两个队列,每个队列由一个进程填充。操作后,如果操作属于同一对象,并且两者都在处理同一对象,则可能会导致错误的数据。因此,我需要一

我想使用mysql行级锁。我锁不上整张桌子。我希望避免两个进程同时为服务器处理两条不同的消息。 我想我可以有一张桌子叫:
server\u lock
如果一个进程开始在服务器上工作,它将在表中插入一行

这种方法的问题在于,如果应用程序崩溃。我们需要手动取下锁。 如果应用程序崩溃,有没有办法释放行级锁和锁

编辑 我用C++作为语言。
我的应用程序类似于消息队列。但区别在于有两个队列,每个队列由一个进程填充。操作后,如果操作属于同一对象,并且两者都在处理同一对象,则可能会导致错误的数据。因此,我需要一个锁定机制来处理这两个队列,这样两个处理器就不会同时修改同一个对象

我可以想出两种方法:

  • 在移除锁的程序上实现一些错误处理程序。在对程序一无所知的情况下,很难说如何做到这一点,但大多数语言在崩溃时退出之前都有一些方法来做一些工作。这是很危险的,因为当事情不对时,就会发生碰撞。如果您继续做任何工作,可能会损坏数据库或类似的东西
  • 定期更新锁。在程序中添加一个线程,定期重新获取锁,或者在正在执行的某个循环中重新获取锁。然后,当一个锁在一段时间内没有更新时,您就知道它属于一个崩溃的程序

我更新了问题的更多细节。这些信息有用吗?您有一个应用程序有两个队列,还是两个应用程序各有一个queu?两个应用程序各有一个队列。