如何确定繁忙队列的优先级,以便处理低优先级项目?

Rom*_*man 1 mysql sorting algorithm queue scheduling

我们使用mysql表实现了一个基本的作业队列,其中一些项的优先级低于其余项.由于队列连续填充高优先级项目,因此有时不会处理低优先级项目.

在我们的实现中,我们将项目及其优先级插入到表中,并从队列中获取下一个项目,我们查询表格如下:

SELECT * FROM `queue` ORDER BY `priority` DESC, `created_at` ASC
Run Code Online (Sandbox Code Playgroud)

我们应该如何建模队列,以便及时处理较低优先级的项目?

编辑

队列通常包含超过25,000个项目.

Rob*_*rto 5

也许您可以按队列中的时间加权优先级.这样,优先级会增加任务未完成的时间,最终这些任务应该移到列表的顶部.

看起来你已经有关于记录任务的时间("created_at")的数据,所以我认为你有所需的一切:

SELECT * FROM queue ORDER BY priority*( now() - created_at ) DESC
Run Code Online (Sandbox Code Playgroud)