使用Microsoft SQL Server连接超出带宽时会发生什么?

时间:2015-03-27 19:45:16

标签: sql-server bandwidth

一组100多名用户使用的应用程序是使用VB6和RDO制作的。一个替代品即将到来,但旧的仍在维持。用户搬到了街对面的另一栋楼,问题就开始了。我对这个问题的看法是带宽,但我不得不与其他人说出它的数据库。用户经常使用应用程序来体验网络运行缓慢,但一般也会遇到工作站任务。该应用程序移动大型音频文件并偶尔索引它们以及其他文件。有时数据库会挂起。我们有许多高端,强大的SQL Server,因此它不是服务器问题。我想到的是,一个事务在连接上开始,但由于通信错误而无法正常完成。来自其他连接的更新被阻止,它们会继续堆叠,用户也会停用半天。在我验证数据库挂起后,我已经开始讨论问题,将数据库设置为单用户,然后返回多用户以清除连接。他们必须重启他们的应用程序。今天我发现他们新的位置有一个带宽限制,他们经常最大限度地使用。我认为在旧的位置有一个很大的管道为很多人服务,但现在他们正在为少数人服务的小管道,这也不太容忍瞬间的高带宽需求。

我想知道的是,当达到带宽限制时,数据包即将来来往往会发生什么。另外我想知道SQL Server通信中发生了什么。有些数据包丢失了吗?他们是否开始更多地按顺序到达?会出现计时问题吗?

我计划开始控制文件在应用程序中的移动。但我也想知道网络节点上有关瞬态高需求的配置。

1 个答案:

答案 0 :(得分:1)

这是一个非常广泛的问题。网络是非常关键的(特别是在可用性组或任何类型的镜像设置中)以获得良好的性能。当事务在SQL服务器上完成时,它们将被放置在输出缓冲区中。该应用程序然后需要选择'该数据,清除它的输出缓冲区并继续。我认为(不知道您的配置)您的应用程序无法完成往返,因为网络管道被请求淹没,因此应用程序无法获得成功完成和关闭所需的内容。这会造成严重破坏,因为网络无法跟上应用和SQL服务器正在尝试做的事情。然后你在一条高速公路上有200辆汽车堆积。

事后看来,在每个人都搬到街对面之前,应该对网络容量进行大量测试。很明显,这并没有发生,所以你可以用你拥有的东西做你所能做的事情。如果公司无法获得稳定的网络连接,则情况可能无法控制。如果您是DBA,我强烈建议您与您的高层对话并向他们解释网络容量减少的后果。很多时候,显示无所作为的后果可能导致行动。

出于好奇,有没有什么方法可以分析堆积发生时等待的情况?我认为这将是ASYNC_NETWORK_IO的内容,这通常表明SQL正在等待应用程序返回并获取它的数据。

相关问题