【问题标题】:mysql: exclusive select like SQS?mysql:像SQS这样的独占选择?
【发布时间】:2011-04-23 18:50:32
【问题描述】:

有没有办法在mysql上模拟Amazon SQS消息选择机制(独占)?我需要这个来为多个 ec2 实例使用一个 mysql 表,这些实例将处理并从中删除行。

select ... for update 不是我想要的,因为它在选择时锁定了一个线程,而不是返回未锁定的实例。

【问题讨论】:

    标签: mysql sql concurrency amazon-sqs


    【解决方案1】:

    最终我想到了这个想法(现在没有实现):

    1. 更改目标表,添加列lock_name、lock_time

    2. 每次迭代:

    2.1。 update target_table set lock_time = now(), lock_name = 'controller_instance_name' where lock_time

    2.2。 select * from target_table where lock_name = 'controller_instance_name' and lock_time > now() - visibilityTimeout

    2.3 选择中的每一项

    2.3.1 处理一下

    2.3.2 从表中删除:delete from target_table where id = ?

    每个控制器实例在锁定超过 visibilityTimeout 值后将能够选择行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-02
      • 2022-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多