【发布时间】:2015-05-12 01:49:13
【问题描述】:
我昨天注意到 .NET 的 SqlConnection 类中的默认网络数据包大小与 SQL Server 本身的默认值之间存在显着差异。
对于SqlConnection 类的PacketSize 属性,根据this link:
网络数据包的大小(以字节为单位)。默认值为 8000。
在那篇文章的先前版本中,它提到(一直追溯到 .NET 1.1)默认值为 8192 字节。但是,对于 SQL Server(根据 this link):
默认数据包大小为 4,096 字节。
从那篇文章看来,至少从 SQL Server 2005 开始,这就是默认设置。有人知道它们之间存在这种差异的原因吗?
更新:为了给这个问题增添更多乐趣,我一直在与Thomas LaRock(他恰好是 SQL MVP)交谈,他向我提到,在 SQL Server 2000 中,默认网络数据包大小为事实上,8192 字节(如 .NET 1.1!)。但是,它在后来的版本中发生了变化,因为它造成了多少碎片,需要每周重新启动服务器。
那么为什么 SQL Server 减少了一半,而 .NET 只减少了 192 字节呢?是否有什么东西迫使 SQL Server 为此只使用 2 的倍数?
【问题讨论】:
-
碎片化什么?
-
很遗憾,我认为您不会在这里找到最佳答案。提问的目的是什么?历史/民间的个人知识?这些尺寸是根据在大多数情况下可能是最佳的而设置的。如果您使用较大的值进行 BULK 上传会更好(注意网络 MTU)。我只能提出对实际答案几乎没有影响的可能问题。
标签: .net sql-server packet