Chúng tôi có một hệ thống nơi khách hàng được phân bổ sản phẩm trên cơ sở ai đến trước được phục vụ trước.Giải pháp tối ưu cho số lượng lớn yêu cầu trên một bảng cơ sở dữ liệu
bảng sản phẩm của chúng tôi có chứa một chìa khóa incrementing chính mà bắt đầu từ số không mà chúng tôi sử dụng để theo dõi có bao nhiêu sản phẩm đã được phân bổ tức là một người sử dụng giữ một sản phẩm và được phân bổ 1, người sử dụng tiếp theo được 2 vv
Vấn đề là có khả năng hàng trăm ngàn người dùng sẽ truy cập vào hệ thống trong bất kỳ giờ cụ thể nào. Tất cả những ai sẽ đánh một cái bàn này.
Vì chúng tôi cần đảm bảo rằng mỗi khách hàng chỉ được phân bổ một sản phẩm và theo dõi số lượng sản phẩm đã được phân bổ, chúng tôi sử dụng khóa hàng cho mỗi khách hàng truy cập vào hệ thống để đảm bảo họ ghi vào bảng trước khách hàng tiếp theo truy cập hệ thống - nghĩa là thực thi quy tắc đầu tiên được phân phát trước.
Chúng tôi lo ngại về nút cổ chai là thời gian xử lý của từng yêu cầu đến SQL Server 2008 Enterprise Edition và khóa hàng.
Chúng tôi không thể sử dụng nhiều máy chủ vì chúng tôi cần đảm bảo tính toàn vẹn của khóa chính để mọi thứ yêu cầu sao chép sẽ không hoạt động.
Có ai biết về bất kỳ giải pháp tốt nào đặc biệt hiệu quả trong việc xử lý một số lượng lớn yêu cầu trên một bảng cơ sở dữ liệu không?
Thông tin thêm một chút: Bảng được đề cập về cơ bản chỉ chứa hai trường - ID và CustomerID. Giải pháp này dành cho một triệu sản phẩm miễn phí - vì thế kỳ vọng nhu cầu cao và lý do tại sao sử dụng khóa chính gia tăng là chìa khóa có ý nghĩa đối với chúng tôi - một khi khóa đạt đến một triệu, không có khách hàng nào có thể đăng ký. Ngoài ra, các sản phẩm đều khác nhau để phân bổ khóa chính xác là quan trọng, ví dụ: 100 khách hàng đầu tiên được nhập nhận sản phẩm có giá trị cao hơn 100 sản phẩm tiếp theo, v.v.
Cảm ơn bạn đã trợ giúp.
Bạn có thể vui lòng gắn thẻ lại, bao gồm [sqlserver] và bạn có thể cho tôi biết phiên bản và ấn bản không, nếu bạn chỉnh sửa câu hỏi của mình và cho chúng tôi biết bạn có 'SQL2008 Enterprise Edition' chẳng hạn chúng tôi có thể cung cấp giải pháp phù hợp Bảng phân vùng có sẵn trong SQL 2008 EE –
Cảm ơn Jeremy. Đã thêm thông tin bổ sung. –
Câu hỏi đầu tiên rõ ràng; bạn đã loại bỏ mọi thứ khác trong giao dịch lấy chìa khóa chưa? Ví dụ. bạn biết trước khi cố gắng lấy chìa khóa mọi thứ bạn cần biết, đi đến bàn lấy chìa khóa và mở khóa trước khi làm những thứ khác? – Karl