Questions tagged «queue»

1
Postgres UPDATE…LIMIT 1
我有一个Postgres数据库,其中包含有关服务器群集的详细信息,例如服务器状态(“活动”,“备用”等)。活动服务器在任何时候都可能需要故障转移到备用服务器,而且我不在乎使用哪个备用服务器。 我希望数据库查询更改备用数据库(仅一个)的状态,并返回要使用的服务器IP。选择可以是任意的:由于服务器的状态随查询而变化,因此选择哪个备用数据库都无关紧要。 是否可以将查询限制为仅一次更新? 这是我到目前为止的内容: UPDATE server_info SET status = 'active' WHERE status = 'standby' [[LIMIT 1???]] RETURNING server_ip; Postgres不喜欢这样。我可以做些什么?

2
Postgres侦听/通知为消息队列
有什么方法可以使用Postgres侦听/通知功能将消息传递到通道,并且只有一个侦听器使用此消息吗? 这样做的目的是让我有多个“工作者”应用程序都在收听同一个Postgres频道。但是我只希望每个通过通知渠道收到的消息都完成一次工作。 如果“听/通知”不是Postgres中的正确功能,是否应该使用其他功能? 理想情况下,我希望不使用任何其他扩展名即可执行此操作。


2
SQL Server中多个工作线程的FIFO队列表
我试图回答以下stackoverflow问题: 我应该使用哪种SQL Server 2005/2008锁定方法来处理多个服务器应用程序实例中的单个表行? 在发布一个有点天真的答案之后,我想我会把钱放在嘴边,实际上 测试我所建议的方案,以确保我不会像往常一样追逐OP。好吧,事实证明,这比我想象的要难得多(我敢肯定,这对任何人来说都不奇怪)。 这是我尝试过并想到的: 首先,我尝试使用派生表中的ORDER BY进行TOP 1 UPDATE ROWLOCK, READPAST。这产生了死锁,并且还处理了乱序的项目。它必须尽可能接近FIFO,以排除需要多次尝试处理同一行的错误。 然后,我尝试选择所需的下一个QueueID到一个变量,使用的各种组合READPAST,UPDLOCK,HOLDLOCK,并ROWLOCK专门由会话保持了更新的行。我尝试过的所有变体都遇到了与以前相同的问题,并且对于与的某些组合READPAST,抱怨如下: 您只能在READ COMMITTED或REPEATABLE READ隔离级别中指定READPAST锁。 这是令人困惑的,因为它是“已提交读”。我以前遇到过这个问题,这令人沮丧。 自从我开始写这个问题以来,Remus Rusani发布了一个新的问题答案。我阅读了他的链接文章,看到他正在使用破坏性读取,因为他在回答中说“在网络通话期间实际上不可能保持锁定状态”。在阅读了他的文章中有关热点和需要锁定才能进行任何更新或删除的页面的内容后,我担心即使我能够算出正确的锁定来执行我想要的操作,也无法扩展并且可能无法处理大量并发。 现在,我不确定该去哪里。是真的无法实现在处理行时维持锁定(即使它不支持高tps或大量并发)吗?我想念什么? 希望比我更聪明的人和比我更老练的人可以提供帮助,以下是我使用的测试脚本。它又切换回TOP 1 UPDATE方法,但是我也将另一种方法留在其中,注释掉,以防您也想探索一下。 将这些粘贴到单独的会话中,运行会话1,然后快速将所有其他会话粘贴。在大约50秒内,测试将结束。查看每个会话中的消息,以查看其所做的工作(或失败的方式)。第一个会话将显示一个带有快照的行集,第二个快照详细描述了存在的锁和正在处理的队列项。有时它可以工作,而其他时候则根本不工作。 第一场 /* Session 1: Setup and control - Run this session first, then immediately run all other sessions */ IF Object_ID('dbo.Queue', 'U') IS NULL CREATE …

3
实现基于并发表的队列的最佳方法
我在MySQL中有一张表,代表要处理的链接队列。链接由外部应用程序一个接一个地处理,最后被删除。这是一个高容量队列,我有多个处理应用程序实例,分布在多个服务器上。 如何确保每个记录仅由一个应用程序选择?有没有办法标记/锁定记录? 现在,为了避免两个或多个拾取同一链接,我允许每个实例仅拾取一组特定的记录(基于其ID的MOD),但这不是增加队列处理的透明方法通过添加新实例来提高速度。
11 mysql  queue 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.