Tôi nhận thấy rằng có sự khác biệt đáng chú ý giữa kích thước gói mạng mặc định trong lớp SqlConnection
của .NET và mặc định trong SQL Server.Sự khác biệt về kích thước gói mạng mặc định: Mặc định SqlConnection và SQL Server
Đối với SqlConnection
lớp PacketSize
tài sản, mỗi this link:
Kích thước (tính theo byte) của các gói dữ liệu mạng. Giá trị mặc định là 8000.
Trong các phiên bản trước của bài viết đó, đề cập đến (tất cả cách quay lại .NET 1.1) mặc định là 8192 byte. Tuy nhiên, đối với SQL Server (mỗi this link):
Kích thước gói mặc định là 4.096 byte.
Từ bài viết đó dường như đó là mặc định vì ít nhất SQL Server 2005. Có ai biết lý do cho sự khác biệt này giữa chúng không?
CẬP NHẬT: Để thêm nhiều niềm vui hơn cho câu hỏi này, tôi đã nói chuyện với Thomas LaRock (ai xảy ra là SQL MVP) và ông đã đề cập với tôi rằng trong SQL Server 2000, kích thước gói mạng mặc định là , 8192 byte (như .NET 1.1!). Mặc dù vậy, nó đã bị thay đổi trong các phiên bản sau, vì có bao nhiêu phân mảnh nó gây ra, đòi hỏi phải khởi động lại máy chủ hàng tuần.
Vậy tại sao SQL Server giảm một nửa, nhưng .NET chỉ giảm 192 byte? Có điều gì đó buộc SQL Server chỉ sử dụng bội số của 2 cho điều này?
phân mảnh của cái gì? –
Rất tiếc, tôi không nghĩ bạn sẽ tìm thấy câu trả lời hay nhất ở đây. Mục đích của câu hỏi là gì? Kiến thức cá nhân lịch sử/Fokeloric? Các kích thước này được đặt dựa trên Có lẽ tốt nhất trong hầu hết các trường hợp. Nếu bạn đang thực hiện tải lên LỚN bằng cách sử dụng giá trị lớn hơn thì tốt hơn (xem ra MTU mạng). Tôi chỉ có thể hỏi những câu hỏi có thể làm sáng tỏ câu trả lời thực sự. – ripvlan