2009-03-13 61 views
21

Tôi đang làm việc trên một dự án mà chúng tôi đang nghĩ đến việc sử dụng SQLCacheDependency với SQL Server 2005/2008 và chúng tôi đang tự hỏi làm thế nào điều này sẽ ảnh hưởng đến hiệu suất của hệ thống.Câu hỏi về hiệu suất cho phụ thuộc bộ nhớ cache SQL

Vì vậy, chúng tôi đang phân vân về các câu hỏi sau

số lượng đối tượng SQLCacheDependency (thông báo truy vấn) có thể có tác động tiêu cực trên SQL Server thực hiện ví dụ về chèn, cập nhật và xóa các hoạt động trên bảng bị ảnh hưởng?

Hiệu ứng nào (hiệu suất khôn ngoan) sẽ ví dụ 50000 thông báo truy vấn khác nhau trên một bảng có trong SQL Server 2005/2008 khi chèn và xóa trên bảng đó.

Có đề xuất nào về cách sử dụng SQLCacheDependencies không? Bất kỳ người làm chính thức nào và không? Chúng tôi đã tìm thấy một số thông tin trên internet nhưng không tìm thấy thông tin về các tác động hiệu suất.

Nếu có ai ở đây có một số câu trả lời cho những câu hỏi này sẽ tuyệt vời.

+0

Bạn đã tìm thấy câu trả lời nào chưa? Tôi cũng rất muốn biết câu trả lời cho điều này. – niaher

+0

Tôi lấy làm tiếc về câu hỏi này đã trở nên như thế nào, nhưng sự đồng thuận về dự án là đi theo một tuyến đường khác, vì vậy chúng tôi chưa bao giờ thực sự có được bất kỳ kết quả rõ ràng nào. Tuy nhiên những gì tôi đã đọc trong các câu trả lời dưới đây đều chứa thông tin quan trọng về những vấn đề này, tôi không nghĩ rằng tôi có thể trao nhiều câu trả lời đúng vì tôi nghĩ rằng tất cả các câu trả lời cho đến nay thực sự là chính xác mặc dù tôi không có bất kỳ kết quả nào sao lưu cảm giác ruột này. –

Trả lời

1

This page dường như có một số thông tin tốt về thiết lập kỹ thuật nào để sử dụng tốt (được cấp tôi đã chỉ đọc lướt qua).

+2

Có những hướng dẫn để thiết lập sự phụ thuộc bộ nhớ cache nhưng đó không phải là vấn đề. Câu hỏi đặt ra là về hiệu suất phạt cho các hoạt động SQL khi các yêu cầu chache rất nhiều. Bài viết này không may không có thông tin về điều đó cả. :-( –

4

SQLCacheDependency được triển khai dưới dạng chế độ xem được lập chỉ mục và mỗi khi bảng được sửa đổi, chỉ mục chế độ xem này sẽ thay đổi. rất nhiều khung nhìn (đối tượng SQLCacheDependency) trên cùng một bảng có nghĩa là một hit hoàn hảo cho các sửa đổi. tuy nhiên nếu bạn có 1 khung nhìn (đối tượng SQLCacheDependency) trên mỗi bảng, bạn sẽ không có vấn đề gì.

thông báo thay đổi bộ nhớ cache là không đồng bộ và được kích hoạt khi máy chủ có tài nguyên.

+0

Vì dự án liên quan đến nhiều kết nối đồng thời với các bảng có thể đã phá vỡ "thực hành tốt nhất" này mà bạn đưa ra, và tôi có khuynh hướng tin rằng bạn chính xác trong việc cải thiện. –

1

Tất cả những gì tôi có thể cung cấp là bằng chứng cho hiệu suất, nhưng chúng tôi sử dụng SqlCacheDependency như một giải pháp nhắn tin cho ứng dụng doanh nghiệp lớn xử lý hàng chục nghìn thư mỗi giờ.

Kiến trúc cơ bản là công ty chúng tôi sử dụng Perforce để kiểm soát nguồn và chúng tôi có "dịch vụ đăng ký" nhận tin nhắn từ cuộc gọi webservice kích hoạt hơn được gọi trên mọi cam kết p4 và chèn bản ghi vào cơ sở dữ liệu SQL. Ứng dụng của chúng tôi có thiết lập phụ thuộc để gửi thông báo đăng ký cho mọi thay đổi ảnh hưởng đến chi nhánh hoặc đường dẫn mà bạn đang theo dõi.

Hiệu suất là tốt. Trình kích hoạt chạy theo thứ tự 200ms và chúng tôi chưa bao giờ có khiếu nại về thời gian chờ chuyển tiếp tin nhắn đến người dùng cuối.

Như thường lệ, số dặm của bạn có thể thay đổi.

2

Bạn nói đúng, không có nhiều thông tin về vấn đề này được cung cấp nhưng có một cụm từ liên quan đến câu hỏi của bạn tại trang này http://msdn.microsoft.com/en-us/library/ms178604%28VS.80%29.aspx

"Các hoạt động cơ sở dữ liệu liên quan đến sự phụ thuộc SQL bộ nhớ cache rất đơn giản và do đó không phải chịu nặng chi phí xử lý trên máy chủ. "

Hy vọng điều này sẽ giúp bạn mặc dù câu hỏi của bạn đã hơi cũ rồi.

6

Phụ thuộc bộ nhớ cache SQL bằng cơ chế bỏ phiếu không được tải trên máy chủ sql hoặc máy chủ ứng dụng.

Cho phép xem những gì tất cả các bước đang có cho sqlcachedependency để làm việc và phân tích chúng:

  1. Cơ sở dữ liệu được kích hoạt cho sqlcachedependency.
  2. Một bảng nói 'Nhân viên' được bật để phụ thuộc vào sqlcached. (có thể là bất kỳ số lượng bảng nào)
  3. Web.config được cập nhật để cho phép phụ thuộc sqlcached.
  4. Trang nơi bạn sử dụng phụ thuộc vào bộ nhớ cache sql được định cấu hình. thats it.

Bên trong:

  • bước 1. tạo ra một bảng 'ASPnet_sqlcachetablesforchangenotification' trong cơ sở dữ liệu mà sẽ lưu trữ các 'nhân viên' tên bảng mà sqlcachedependency được kích hoạt. và thêm một số thủ tục được lưu trữ.
  • bước 2. chèn mục nhập bảng 'Nhân viên' trong bảng 'ASPnet_sqlcachetablesforchangenotification'. Ngoài ra, hãy tạo trình kích hoạt xóa cập nhật chèn trên bảng 'Nhân viên' này.
  • bước 3. cho phép áp dụng cho phụ thuộc sqlcached bằng cách cung cấp chuỗi kết nối và thời gian thăm dò ý kiến.

bất cứ khi nào có thay đổi trong bảng 'Nhân viên', trình kích hoạt được kích hoạt mà bản cập nhật sẽ cập nhật bảng 'ASPnet_sqlcachetablesforchangenotification'. Bây giờ các cuộc thăm dò ứng dụng cơ sở dữ liệu nói mỗi 5000ms và kiểm tra bất kỳ thay đổi nào đối với bảng 'ASPnet_sqlcachetablesforchangenotification'. nếu có bất kỳ thay đổi nào, bộ nhớ cache tương ứng sẽ bị xóa khỏi bộ nhớ.

Lợi ích tuyệt vời của bộ nhớ đệm kết hợp với độ mới của dữ liệu (dữ liệu tối đa có thể là 5 giây cũ). Việc bỏ phiếu được thực hiện cẩn thận bởi một quá trình nền với không phải là một rào cản hiệu suất. bởi vì như bạn thấy từ danh sách trên, nhiệm vụ ít nhất là đòi hỏi CPU.

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