2009-06-28 70 views
10

Chúng tôi đang viết một chương trình dựa trên ASP.Net/C# có khả năng sẽ được truy cập bởi một số công ty (mỗi công ty có đăng nhập và dữ liệu riêng). Chúng tôi đang nghĩ đến việc có nhiều cơ sở dữ liệu sql server 2008 (cùng một trường hợp), mỗi cơ sở cho một công ty. Tuy nhiên, chương trình C# truy cập cơ sở dữ liệu sẽ giống nhau và sẽ tạo chuỗi kết nối thích hợp dựa trên cơ sở dữ liệu mà khách hàng sẽ truy cập.Số lượng tối đa cơ sở dữ liệu trong máy chủ sql 2008

Có bao nhiêu cơ sở dữ liệu như vậy có thể được tạo ra trong trường hợp duy nhất của máy chủ sql trước khi nhìn thấy bất kỳ suy thoái hiệu suất do:

  • Giới hạn trên các kết nối, bởi vì mỗi kết nối (không chắc chắn nếu nó sẽ được gộp lại để truy cập cơ sở dữ liệu khác nhau) được tạo bằng chuỗi kết nối differents.

  • Giới hạn số lượng cơ sở dữ liệu, bị giới hạn bởi máy chủ phần cứng hoặc máy chủ sql 2008 sẽ hiển thị sự xuống cấp khi số lượng cơ sở dữ liệu tăng lên 100?

Bất kỳ điều gì khác tôi có thể bị thiếu?

Cảm ơn thời gian của bạn

Trả lời

13
  • cơ sở dữ liệu Max mỗi SQL Server dụ: 32.767
  • Max kết nối tài khoản: 32.767

(Từ đây: Maximum Capacity Specifications for SQL Server)

Cả hai thực tế bị giới hạn bởi số lượng RAM của SQL máy erver có, lâu trước khi nó đạt đến các giá trị tối đa đó.

Trong số hai, tôi nghi ngờ kết nối người dùng sẽ là vấn đề lớn hơn nếu bạn có hàng nghìn người dùng (vì bạn không sử dụng kết nối tổng hợp).

Để tìm giá trị hiện tại máy SQL Server:

SELECT @@MAX_CONNECTIONS AS 'Max Connections' 

Cập nhật để đáp ứng với ý kiến ​​tấm áp phích của:
Nó không thực sự số lượng cơ sở dữ liệu là vấn đề, nhưng nhiều hơn số lượng thường xuyên truy cập các trang trong các cơ sở dữ liệu đó. Nếu tất cả các trang 'nóng' phù hợp với trí nhớ (và rất ít lần đọc vật lý xảy ra) thì tất cả đều tốt.

+0

Cảm ơn ý kiến ​​của bạn Bất kỳ ý tưởng nào về hiệu suất máy chủ sql bị xuống cấp nếu chúng tôi tăng số lượng cơ sở dữ liệu. Giả sử chúng ta so sánh một cơ sở dữ liệu duy nhất nơi dữ liệu được phân vùng bằng cách sử dụng khóa chính/khóa ngoài và giữa thời điểm mỗi công ty ở trên một cơ sở dữ liệu khác. Ngoài ra, máy chủ sql cùng với ado.net không làm kết nối tổng hợp nếu bạn đang tạo kết nối đến cơ sở dữ liệu khác nhau nhưng thực hiện nó từ cùng một ví dụ của quá trình asp.net? – Samuel

+2

@Samuel: đề xuất bạn thêm những câu hỏi đó vào câu hỏi ban đầu của mình. (1) Nó không thực sự là số lượng cơ sở dữ liệu, nhưng nhiều hơn số lượng các trang được truy cập thường xuyên trong các cơ sở dữ liệu đó. Nếu tất cả các trang 'nóng' phù hợp với trí nhớ (và rất ít lần đọc vật lý xảy ra) thì tất cả đều tốt. (2) Không. Một kết nối đến một DB khác là một kết nối người dùng khác. –

2

Có nhiều cơ sở dữ liệu cho nhiều khách hàng có thể dễ dàng trở thành cơn ác mộng bảo trì. Nếu ứng dụng giống nhau, tôi giả định rằng thiết kế DB sẽ giống nhau.

Chúng tôi đã thực hiện một dự án tương tự vài năm trước, nhưng chúng tôi quyết định chuyển dữ liệu trong cùng một cơ sở dữ liệu và sau đó phát triển một mô hình bảo mật mạnh mẽ để đảm bảo rằng một khách hàng không kết thúc xem hoặc sửa đổi dữ liệu của khách hàng khác.

Tôi có thể tự hào nói rằng dự án đã thành công và hôm nay khi chúng tôi nói là đang nắm giữ dữ liệu của hơn 100 khách hàng khác nhau và đang thực hiện hoàn hảo.

Raj

+2

Đó là sự thật nhưng một điều tôi đã nghĩ đến là sự linh hoạt của việc thay đổi khách hàng sang một trường hợp khác nếu máy chủ được tải ... Ngoài ra tôi nghĩ rằng có cơ sở dữ liệu riêng biệt có thể làm cho việc xử lý nhanh hơn vì sẽ không có quá nhiều hồ sơ trong cơ sở dữ liệu cá nhân. Chúng tôi đang nói về khoảng 100.000 mục cho mỗi công ty. – Samuel

+2

Nếu bạn là người dùng duy nhất hoặc chắc chắn lớn của một cơ sở dữ liệu hoặc bộ sưu tập cơ sở dữ liệu duy nhất, việc bảo trì đó sẽ gần như tự động vào thời điểm nó được phát triển. Nếu bạn không thể tự động hóa nó, nó sẽ trở nên ít nhất là trùng hợp với các vấn đề. Một quá trình triển khai được quản lý tốt sẽ không tìm thấy việc duy trì nhiều cơ sở dữ liệu, giống hệt nhau, một cơn ác mộng. – ProfK

4

Bạn cũng nên lưu ý rằng các kết nối sẽ được gộp bởi chuỗi kết nối - trong trường hợp của bạn, bạn sẽ nhận được hồ riêng biệt cho mỗi DB khách hàng. Điều đó có thể không tệ nếu bạn có lưu lượng truy cập cao cho mỗi khách hàng, nhưng nếu bạn có lưu lượng truy cập thấp đến nhiều cơ sở dữ liệu khác nhau, bạn sẽ không nhận được đầy đủ lợi ích của việc gộp nhóm.

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