Một phần của ứng dụng tôi đang thực hiện là một swf cho thấy một thử nghiệm với khoảng 80 câu hỏi. Mỗi câu hỏi được lưu trong SQL Server thông qua WebORB và ASP.NET.Xếp hàng bằng Cơ sở dữ liệu hoặc MSMQ?
Nếu một ứng cử viên kết thúc bài kiểm tra, phiên cần phải được xác thực. Vấn đề là đôi khi 350 ứng cử viên kết thúc thử nghiệm của họ tại cùng một thời điểm, và CPU trên máy chủ web và SQL Server phát nổ (350 xác nhận đồng thời).
Bây giờ, tôi nên triển khai xếp hàng tại đây bằng cách nào? Trong cơ sở dữ liệu, có một bảng có bản ghi cho mỗi phiên. Một cột giữ trạng thái. 1 được hoàn thành, 2 được xác nhận.
tôi có thể thực hiện xếp hàng theo hai cách (như tôi nhìn thấy nó, có thể bạn có mệnh đề khác):
- Một quy trình để kiểm tra bảng cho hồ sơ với tư cách 1. Nếu nó tìm thấy một, nó xác nhận các phiên. Vì vậy, các phiên được xác thực sau một.
- Nếu một ứng cử viên kết thúc phiên của nó, một tin nhắn được gửi đến một hàng đợi MSMQ. Một quá trình khác lắng nghe hàng đợi và xác nhận phiên sau một.
Bây giờ là:
- Điều gì sẽ là phương pháp tốt nhất?
- Bạn bắt đầu quá trình sẽ xác thực phiên ở đâu? Trong global.asax (application_start) của bạn? Là một dịch vụ cửa sổ? Như một exe trên thư mục gốc của trang web được bắt đầu trong application_start?
Với tôi, việc sử dụng bảng và tìm kiếm hồ sơ có trạng thái 1 có vẻ là cách dễ nhất.
Tôi đã thiết lập dựa trên googled, nhưng tôi không hoàn toàn chắc chắn ý của bạn là gì. Tôi đã xác thực nhanh nhất có thể (hiện tại ở mức 500ms mỗi phiên) nhưng vẫn còn, nếu 350 ứng viên xác thực cùng một lúc, nó sẽ tạo 175 giây. Mặc dù, nó được loadbalanced, vì vậy trên thực tế nó là 350/4 giây. Nó hoạt động nhưng cpu của máy chủ web đi gần 100% trong một vài phút. –
sử dụng các hoạt động "thiết lập dựa trên" liên quan đến lập trình cơ sở dữ liệu là khi bạn phát hành một lệnh cơ sở dữ liệu duy nhất, như UPDATE và nó ảnh hưởng đến tất cả các hàng của bạn, trái với vòng lặp trên mỗi hàng và thực hiện một UPDATE riêng biệt trên mỗi hàng. Tôi đã làm một google trên "cơ sở dữ liệu thiết lập dựa trên chế biến" và đây là hai bài viết từ gần đầu: http://www.codeproject.com/KB/database/SetAndProceduralSQL.aspx và http://weblogs.sqlteam.com/jeffs /archive/2007/04/30/60192.aspx –