2011-08-11 22 views
20

Làm cách nào để quyết định khoảng thời gian sử dụng làm thời gian chờ khi sử dụng đối tượng SqlCommand?Đối tượng SqlCommand, khoảng thời gian nào cho CommandTimeout?

Mở phần của mã tôi đang làm việc trên (do người khác viết) Tôi có:

cmd.CommandTimeout = 60; 

Mà tôi nghĩ là khá ngắn. Tuy nhiên, tôi đã thấy một số người trong diễn đàn nói về việc thiết lập nó đến 30000, mà có vẻ quá dài.

Làm cách nào để biết điều gì là tốt nhất cho đơn đăng ký của tôi?

Trả lời

37

Dường như mọi người đang nhầm lẫn về việc đây có phải là giây hoặc mili giây hay không. Các documentation nói rằng thời gian chờ là trong vài giây. Thời gian chờ 1 phút có vẻ hợp lý đối với hầu hết các truy vấn. Thời gian chờ hơn 8 giờ không có vẻ hợp lý.

Bạn có các truy vấn bạn mong đợi mất hơn một phút không? Nếu vậy, hãy tăng giá trị đó lên giá trị bạn mong đợi cao hơn bất kỳ thứ gì bạn thấy nếu mọi thứ hoạt động bình thường, nhưng không cao đến mức phải mất mãi để cảnh báo bạn về một vấn đề. (Ví dụ: bạn có thể đi từ 1 phút đến 5 phút.)

5

Bạn nên tính thời gian truy vấn dài nhất có thể và nhân giá trị đó với 1,5 để xử lý quá tải máy chủ, lưu lượng mạng, v.v ...

1

Đây là SECONDS và tùy thuộc hoàn toàn vào thời gian thực thi lệnh SQL thực tế. Ví dụ, hầu hết các lệnh của chúng tôi chạy sproc sẽ mất không quá 30 giây để hoàn thành, tuy nhiên có một cặp chạy lâu hơn nữa, có nghĩa là chúng có thời gian chờ có giá trị cao.

Bạn sẽ cần phải cấu hình bao lâu trên trung bình thường xuyên của anh tiếp sau đó điều chỉnh thời gian chờ cho phù hợp, và nhớ để lại chỗ cho các biến như, vv

1

SqlCommand.CommandTimeout được sử dụng để thiết lập thời gian chờ trước khi chấm dứt nỗ lực để thực thi một lệnh, có nghĩa là thời gian mà bạn muốn cung cấp cho SqlCommand của bạn để thực hiện truy vấn sql cụ thể hoặc thủ tục lưu trữ và chờ cho nó để hoàn thành. Nếu lệnh không hoàn thành trong thời gian được chỉ định sẽ bị chấm dứt và ngoại lệ sẽ bị ném.

Vì vậy, đặt giá trị của CommandTimeout hoàn toàn phụ thuộc vào ứng dụng và yêu cầu của bạn, nếu bạn biết câu lệnh sql hoặc thủ tục được lưu trữ đang thực hiện sẽ mất ít hơn đặt nó để giá trị lớn hơn 60, nếu không 60 giây có vẻ là đủ để chờ đợi để hoàn thành bất kỳ tuyên bố.

+0

Có bất kỳ hậu quả nào trong việc tăng giá trị này lên 5 phút. Tôi đang phát triển một ứng dụng WCF phục vụ khách hàng WPF. –

Các vấn đề liên quan