Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.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/MSSQL-检查记录以进行处理-扩展?_Mysql_Sql Server_Tsql_Scaling_Checkout - Fatal编程技术网

MySql/MSSQL-检查记录以进行处理-扩展?

MySql/MSSQL-检查记录以进行处理-扩展?,mysql,sql-server,tsql,scaling,checkout,Mysql,Sql Server,Tsql,Scaling,Checkout,我试图找出在sql数据库中实现处理队列机制的最有效和可伸缩的方法。简而言之,我有一堆“域”对象和相关的“反向链接”统计数据。我想有效地找出哪些域需要处理它们的反向链接 域表:id,域名 反向链接表:id、domainId、计数、checkedTime 反向链接表有许多记录(用于保存历史记录)到一个域记录。 我需要有效地选择域,将有他们的反向链接处理。这可能意味着具有最近检查时间的反向链接记录在过去已经足够远了,或者域记录根本没有反向链接记录。域需要按许多因素进行排序,包括按最早的checkedT

我试图找出在sql数据库中实现处理队列机制的最有效和可伸缩的方法。简而言之,我有一堆“域”对象和相关的“反向链接”统计数据。我想有效地找出哪些域需要处理它们的反向链接

表:id,域名

反向链接表:id、domainId、计数、checkedTime

反向链接表有许多记录(用于保存历史记录)到一个域记录。 我需要有效地选择域,将有他们的反向链接处理。这可能意味着具有最近检查时间的反向链接记录在过去已经足够远了,或者域记录根本没有反向链接记录。域需要按许多因素进行排序,包括按最早的checkedTime优先排序

存在多个“读卡器”处理域。如果同一个域被处理两次,这不是什么大问题,但这是对cpu周期的浪费

工作进程处理域所需的时间不确定。我更希望有一些备份,因为签出将“过期”,而不是要求工作进程在记录完成时显式地“签入”记录,以防工作进程因某种原因失败

这里的大问题是可伸缩性。从一开始,我将轻松拥有约200万个域名,而且这个数字将每天持续增长。这意味着我的反向链接历史也将快速增长,因为我希望在某些情况下每天处理,而在其他情况下每周处理每个域。 问题是,找到需要反向链接处理的域的最有效方法是什么


谢谢你的帮助

我决定改变一下结构。我没有根据多个表的标准查找需要处理的域,而是为给定域指定一个需要处理每个度量的日期。这使得查找那些需要处理的域变得更加简单


我最终使用了批处理的思想,在批处理中,我找到要处理的域,将它们标记为由批处理id处理,然后将这些域返回给工作者。当worker完成后,它将返回结果,批处理将被删除,域将自然准备好在将来再次处理。

检查旧的反向链接与不存在的反向链接的业务规则是什么?哪一个更迫切需要验证?在这种情况下,检查尚未存在的反向链接将被视为更高的优先级。。。