mysql - 在 MariaDB 中跳过锁定的替代方案
问题描述
FOR UPDATE SKIP LOCKED
在 mariaDB 中是否有任何好的和高性能的替代方案?或者有什么好的做法可以在 mariaDB 中归档工作队列?
解决方案
不要使用锁来指示正在处理队列记录,而是使用索引processing
列。为新记录将其设置为 0,并且在与任何处理不同的事务中,选择一个尚未处理的记录并将其更新为 1。可能还存储时间和进程或线程 ID 以及正在处理记录的服务器。有一个单独的监控流程来检测标记为未在预期时间内完成处理的作业。
避免选择记录所需的非主索引上的临时锁定的替代方法是使用单独的非数据库消息队列来通知您数据库队列中可用的新记录。(除非您不关心一个工作单元是否被多次处理,否则除了任何非数据库队列之外,我总是会使用数据库表。)
推荐阅读
- css - 与屏幕中间居中有关的躺下问题
- list - 我有一个一维数组的列表。我想将它转储到一个 csv 文件中,每行作为一维数组。是否可以使用 numpy,save 来做到这一点?
- postgresql - 如何在 PostgreSQL 中动态创建单调递增序列?
- c# - 如何编写事件处理程序以在检查器中设置侦听器?
- javascript - 单击两个表格单元格突出显示它们的内容并将它们的值存储在变量中
- r - 如果每次修改一个元素时整个向量都会被复制和移动,我如何有效地填充向量
- python - 将numpy数组强制为相同的维度
- c++ - 如何为模板类添加运算符<<?
- java - 检查 ArrayList 中的所有单词是否都在字符串数组中并按顺序排列?
- node.js - 快速会话用户名更改与最新会话加入