Подтвердить что ты не робот

Различия в стандартном сетевом пакете: SqlConnection и SQL Server по умолчанию

Вчера я заметил, что существует заметная разница между размером сетевого пакета по умолчанию в классе .NET SqlConnection и значением по умолчанию в SQL Server.

Для свойства SqlConnection class 'PacketSize, за эта ссылка:

Размер (в байтах) сетевых пакетов. Значение по умолчанию - 8000.

В предыдущих версиях этой статьи он упоминает (вплоть до .NET 1.1), что по умолчанию было 8192 байта. Однако для SQL Server (за эта ссылка):

Размер пакета по умолчанию - 4096 байт.

Из этой статьи кажется, что это было по умолчанию, по крайней мере, с SQL Server 2005. Кто-нибудь знает причину этой разницы между ними?

ОБНОВЛЕНИЕ: Чтобы добавить больше удовольствия в этот вопрос, я говорил с Томасом Лароком (который, оказывается, является MVP MV), и он упомянул мне что в SQL Server 2000 размер сетевого пакета по умолчанию был, по сути, 8192 байта (например,.NET 1.1!). Это было изменено в более поздних версиях, однако, из-за того, сколько фрагментов оно вызывало, что потребовало еженедельной перезагрузки сервера.

Итак, почему SQL Server сократил его наполовину, но .NET только уменьшил его на 192 байта? Есть ли что-то заставляющее SQL Server использовать для этого только кратные 2?

4b9b3361

Ответ 1

Это всегда было так. Даже в SQL 7.0 и SQL Server 2000 значение по умолчанию было 4096 байтов.

Проблема происходит при попытке использовать более высокую сетевую память, чем 8060 байт, поскольку для этого потребуется SQL Server для выделения памяти из области памяти, которая использует размер 384 МБ.

Его очень легко изменить размер пакета со стороны клиентского приложения. В строке подключения вы просто установите packet size=4096.

Желательно не обсуждать размер сети по умолчанию на сервере, на котором запущен SQL Server, если вы не выполняете тяжелую работу с использованием SSIS, или ваше приложение выполняет операции массового копирования, отправки и приема данных BLOB.

Обратите внимание, что SybaseASE использует 512 байтов в качестве размера пакета по умолчанию, поэтому SQL Server 6.5 может иметь это значение по умолчанию (но у меня нет ссылки на цитирование, если это было так для SQL 6.5).

Обратитесь к: Размер сетевого пакета: для скрипки с или не для скрипки с