Âm thanh như tải khá dễ quản lý trên máy chủ vừa phải - bạn chưa nói loại hoạt động đọc nào đang diễn ra trong khi các lần chèn và cập nhật này đang diễn ra (ngoài trích xuất cho Lucene) và kích thước (byte-khôn ngoan)/dữ liệu kiểu-khôn ngoan) của dữ liệu (cardinality bạn đã đưa ra có vẻ tốt).
Tại thời điểm này, tôi muốn giới thiệu chỉ sử dụng regular SQL Server best practices - xác định một sơ đồ đó là thích hợp (bình thường hóa, sau đó denormalize chỉ nếu cần), review execution plans, sử dụng thuật sĩ chỉ số điều chỉnh, use the DMVs để tìm các chỉ số không sử dụng và loại bỏ chúng, choose clustered indexes carefully để quản lý việc chia tách trang, hãy chọn cẩn thận các loại và kích thước dữ liệu và use referential integrity and constraints where possible to give the optimizer as much help nhất có thể. Ngoài ra, đó là các bộ đếm hiệu suất và đảm bảo việc cài đặt phần cứng/phần mềm của bạn được điều chỉnh.
Trong nhiều trường hợp/hầu hết các trường hợp, bạn sẽ không bao giờ cần phải vượt ra ngoài để thực sự tái thiết kế kiến trúc của mình. Tuy nhiên, ngay cả sau khi tất cả điều đó, nếu tải đọc là nặng, chèn và cập nhật có thể gây ra vấn đề khóa giữa đọc và viết, và sau đó bạn đang xem xét các quyết định kiến trúc cho ứng dụng của bạn.
Ngoài ra, hàng triệu bản và cập nhật 200k mỗi ngày sẽ không làm tôi lo lắng - nhưng bạn đề cập đến Lucene (tức là lập chỉ mục toàn văn), vì vậy có lẽ một số cột khá lớn. Cập nhật các cột lớn và xuất khẩu chúng rõ ràng mất nhiều thời gian hơn - và băng thông nhiều hơn và IO.30 cột trong một bảng hàng triệu hàng hẹp với các cột kiểu dữ liệu truyền thống sẽ là một câu chuyện hoàn toàn khác. Bạn có thể muốn xem xét hồ sơ cập nhật và xem liệu bạn có cần phân vùng bảng theo chiều dọc để di chuyển một số cột ra khỏi hàng không (nếu chúng lớn, chúng sẽ được lưu trữ ngoài hàng) để cải thiện hành vi khóa. Vì vậy, điều quan trọng khi bạn tải nặng: Chèn và cập nhật cần càng nhanh càng tốt, khóa càng ít càng tốt (tránh khóa leo thang), cập nhật càng ít chỉ mục càng tốt để hỗ trợ hoạt động đọc .
Nếu tải đọc quá nặng (để chèn/cập nhật bắt đầu xung đột) nhưng không yêu cầu thông tin cập nhật 100% (nói chậm trễ 5 phút hoặc 15 phút), bạn có thể có chỉ đọc phiên bản của cơ sở dữ liệu được duy trì (hoặc giống hệt nhau thông qua nhân rộng, được lập chỉ mục khác nhau về hiệu suất, không chuẩn hóa hoặc mô hình khác - như mô hình chiều). Có lẽ các chỉ mục Lucene của bạn có thể chứa thông tin bổ sung để tất cả các hoạt động đọc đắt tiền đều tồn tại trong Lucene - tức là Lucene trở nên bao phủ cho nhiều hoạt động đọc lớn, từ đó giảm tải đọc của bạn xuống cơ sở dữ liệu. số lần đọc nhỏ) và phần giao dịch của ứng dụng (ví dụ: màn hình thông tin dịch vụ khách hàng sẽ sử dụng cơ sở dữ liệu thông thường, trong khi trang tổng quan theo giờ của bạn sẽ sử dụng cơ sở dữ liệu thứ cấp).
Nguồn
2010-03-21 00:51:18
Bạn có thể cho chúng tôi một số ý tưởng về tải trọng bạn mong đợi không? – gbn