一个 sql server 可以处理多少个 SQL 作业?

Posted

技术标签:

【中文标题】一个 sql server 可以处理多少个 SQL 作业?【英文标题】:How many SQL jobs a sql server can handle? 【发布时间】:2018-06-06 20:16:39 【问题描述】:

我正在创建一个数据库医疗系统,然后我尝试创建一个通知功能,我将在其中使用 SQL 作业,其中 SQL 作业的职责是检查一些表和实体发现需要通知某些数据的更改会将其 id 放入名为 Notification 的实体中,并且将为应用调用触发器以检查该表并发送通知。

我想问的是一个sql server可以处理多少个SQL作业?

在后台运行的 SQL 作业的数量是否会以某种方式影响我的应用程序或数据库的性能?

注意:SQL 作业将每 10 秒运行一次

我在网上找不到任何有用的信息。

提前致谢。

【问题讨论】:

似乎这个链接有很多答案。 google.com/…至于性能问题,当然会影响性能。您的工作大概是对数据库执行查询吧?这意味着这些查询正在使用服务器上的资源并在适当的时候锁定表。 是的,该作业将在一个间隔上查询一个联合 sql 查询并将适当的存储在一个新表中,以便应用程序只能查找该表而不是每次都自行创建联合,是好的还是必须有其他更好的方法? 我认为您正在向后看。拥有一堆作业会在 msdb 等中占用更多空间......但是如果它们没有运行,那么性能明智,你会注意到它们吗?如果您有 1 个每 10 秒运行一次的作业,而不是 100 个每天运行一次的作业会怎样。哪个性能会更差?好吧,显然有更多的处决,但工作是做什么的?性能很大程度上取决于这里。 @scsimon 作业将进行联合查询并将结果存储在另一个表中,而不是应用程序自行执行。然后应用程序将监听触发器并仅查看表格并向用户发送通知 Ahmed 的作业数与性能没有直接关系。一般来说,这些工作在做什么以及他们做这些工作的频率在这里更受关注。一项进行索引维护或 dbcc checkdb 的工作可能比其他工作产生更大的影响。 【参考方案1】:

这个问题确实没有足够的背景来得到明确的答案。有哪些注意事项?

    即使您的 DBMS 处于其峰值事务工作负载之下,您的十秒作业中的查询是否真的在十秒内完成?显然,如果工作通常没有在十秒内完成,你就会得到工作堆积如山。 作业中的查询是否会锁定表和/或索引,从而使事务负载无法有效运行? (您应该尽可能多地使用SET ISOLATION LEVEL READ UNCOMMITTED;,这样数据库读取就不会不必要地锁定内容。) 您工作中的查询是否执行了大量行的插入和更新,从而淹没了 SQL Server 事务日志? 您的服务器有多大? (CPU 内核?RAM?IO 容量?)你的数据库有多大? 如果您的项目成功并且获得了很多用户,那么您对上述问题的回答会保持不变吗? (提示:没有。)

您应该花一些时间为您的工作中的查询制定执行计划,并尽可能提高它们的效率。添加必要的索引。如有必要,重构查询以提高它们的效率。 SSMS 将向您显示执行计划并建议适当的索引。

如果您的工作是删除过期行,您可能希望在数据模型中构建过期时间。例如,假设你的工作是

 DELETE FROM readings WHERE expiration_date >= GETDATE()

您的应用程序会根据您的工作来执行此操作,以避免读数过期。

 SELECT something FROM readings

你可以重构你的应用程序查询来说

 SELECT something FROM readings WHERE expiration_date < GETDATE()

然后在安静的时间,而不是每十秒钟运行一次。

十秒钟的工作并不是世界上最伟大的想法。如果您可以重新设计您的应用程序,使其在 10 秒、10 分钟或 12 小时的工作中正常运行,那么您将拥有一个更具弹性的生产系统。无论如何,如果您的系统非常繁忙时工作出现问题,您将有十多秒的时间来修复它。

【讨论】:

嗯,我想我需要看看我的 erd 和数据库设计。如果适用,则取消 sql 作业

以上是关于一个 sql server 可以处理多少个 SQL 作业?的主要内容,如果未能解决你的问题,请参考以下文章

sql server中的存储过程最多可以有多少参数

sqlserver数据库varchar(40)能存放多少汉字?

sql server一个表能存多少条记录

在它变得丑陋之前,我可以在 Sql server 表中存储多少条记录?

Sql Server 2008 中 1 个几何列与 4 个小数的相对性能是多少?

Sql server 一个数据库最多能有多少表