Iro*_*n84 10 .net sql-server packet
我昨天注意到,.NET SqlConnection类中的默认网络数据包大小与SQL Server本身的默认网络数据包之间存在明显差异.
对于SqlConnection班级的PacketSize财产,按此链接:
网络数据包的大小(以字节为单位).默认值为8000.
在该文章的先前版本中,它提到(一直回到.NET 1.1)默认值为8192字节.但是对于SQL Server(根据此链接):
默认数据包大小为4,096字节.
从那篇文章看,这至少是SQL Server 2005的默认设置.有谁知道它们之间存在这种差异的原因?
更新:为了给这个问题增加更多的乐趣,我一直在和Thomas LaRock(他碰巧是一个SQL MVP)交谈,他告诉我,在SQL Server 2000中,默认的网络数据包大小实际上是8192字节(比如.NET 1.1!).但是,它在以后的版本中发生了变化,因为它造成了多少碎片,需要每周重新启动服务器.
那么为什么SQL Server将它减少一半,但.NET只减少了192个字节?有没有什么东西迫使SQL Server只使用2的倍数?
情况一直如此。即使在SQL 7.0和 SQL Server 2000 中,默认值也是 4096 字节。
当您尝试使用高于 8060 字节的网络内存时,就会出现此问题,因为它将要求 SQL Server 从使用 384 MB 大小的内存区域中分配内存。
从客户端应用程序端修改数据包大小非常容易。在连接字符串中,您只需设置packet size=4096.
建议不要修改运行 SQL Server 的服务器上的默认网络大小,除非您正在使用 SSIS 执行一些繁重的工作,或者您的应用程序正在执行批量复制操作、发送和接收 BLOB 数据。
请注意,SybaseASE 使用 512 字节作为默认数据包大小,因此 SQL Server 6.5 可能会将其设置为默认值(但我没有参考文献来引用 SQL 6.5 是否是这种情况)。
请参阅:网络数据包大小:摆弄或不摆弄
| 归档时间: |
|
| 查看次数: |
2769 次 |
| 最近记录: |