Hiện tại tôi đang thiết kế một cơ sở dữ liệu để sử dụng trong công ty của chúng tôi. Chúng tôi đang sử dụng SQL Server 2008. Cơ sở dữ liệu sẽ giữ dữ liệu được thu thập từ một số khách hàng. Mục tiêu của cơ sở dữ liệu là thu thập số điểm chuẩn tổng hợp trên một số khách hàng.Thiết kế cơ sở dữ liệu: một bảng lớn hoặc bảng riêng biệt?
Gần đây, tôi đã trở nên lo lắng với thực tế là một bảng đặc biệt sẽ nhận được rất lớn. Mỗi khách hàng có khoảng 20.000.000 hàng dữ liệu và sẽ sớm có 30 khách hàng trong cơ sở dữ liệu (nếu không có nhiều hơn). Rất nhiều truy vấn sẽ được thực hiện trên bảng này. Tôi đã nhận thấy các vấn đề về hiệu suất và người dùng tạm thời bị khóa.
Câu hỏi của tôi, chúng tôi sẽ có thể xử lý bảng này trong tương lai hay tốt hơn là chia bảng này thành các bảng nhỏ hơn cho từng khách hàng?
Cập nhật: Nó bây giờ đã được khoảng nửa năm kể từ khi chúng tôi lần đầu tiên tạo ra các bảng. Theo những lời khuyên dưới đây, tôi đã tạo ra một số bàn khổng lồ. Kể từ đó, tôi đã được experimenting with indexes và quyết định trên một chỉ mục nhóm trên hai cột đầu tiên (mã bệnh viện và mã vùng) mà trên đó chúng tôi sẽ có phân vùng bảng đã có chúng tôi đã có phiên bản doanh nghiệp. Thiết lập này đã hoạt động tốt cho đến gần đây, như Galwegian dự đoán, các vấn đề về hiệu năng đang tăng lên. Việc xây dựng lại một chỉ mục mất độ tuổi, người dùng khóa nhau, truy vấn thường mất nhiều thời gian hơn, và đối với hầu hết các truy vấn, nó trả tiền để sao chép phần dữ liệu có liên quan vào bảng tạm thời, tạo chỉ mục trên bảng tạm thời và chạy truy vấn. Đây không phải là nó nên như thế nào. Do đó, chúng tôi đang xem xét mua phiên bản Enterprise để sử dụng các bảng được phân đoạn. Nếu mua hàng không thể đi qua tôi có kế hoạch sử dụng workaround to accomplish partitioning in Standard Edition.
Đối với khóa của bạn, bạn có đang chỉ định gợi ý truy vấn NOLOCK trên các câu lệnh SELECT không? –
Chưa, nhưng bây giờ tôi sẽ. Cảm ơn. – thomaspaulb
Suy nghĩ thứ hai, tôi có lẽ sẽ không, xem xét một số thông tin mà tôi tìm thấy về chủ đề này và thảo luận bên dưới. – thomaspaulb