gpt4 book ai didi

.net - 默认网络数据包大小的差异 : SqlConnection vs. SQL Server 默认值

转载 作者:行者123 更新时间:2023-12-02 10:30:31 33 4
gpt4 key购买 nike

我昨天注意到,.NET 的 SqlConnection 类中的默认网络数据包大小与 SQL Server 本身的默认网络数据包大小之间存在明显差异。

对于 SqlConnection 类的 PacketSize 属性,按照this link :

The size (in bytes) of network packets. The default value is 8000.

在那篇文章的早期版本中,它提到(一直追溯到 .NET 1.1)默认值为 8192 字节。然而,对于 SQL Server(根据 this link ):

The default packet size is 4,096 bytes.

从那篇文章来看,至少从 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,default value was 4096 bytes

problem 当您尝试使用高于 8060 字节的网络内存时,就会发生这种情况,因为它将要求 SQL Server 从使用 384 MB 大小的内存区域中分配内存。

从客户端应用程序端修改数据包大小非常容易。在连接字符串中,您只需设置packet size=4096

建议不要摆弄运行 SQL Server 的服务器上的默认网络大小,除非您正在使用 SSIS 执行一些繁重的工作,或者您的应用程序正在执行批量复制操作、发送和接收 BLOB 数据。

请注意,SybaseASE 使用 512 字节作为默认数据包大小,因此 SQL Server 6.5 可能会将其设置为默认值(但我没有引用引用 SQL 6.5 的情况)。

引用:Network Packet Size: to Fiddle With or Not to Fiddle With

关于.net - 默认网络数据包大小的差异 : SqlConnection vs. SQL Server 默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28966852/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com