2010-03-20 38 views
6

Tôi muốn một số gợi ý cho tài nguyên trực tuyến (blog, hướng dẫn, v.v. - không phải diễn đàn) để giúp tôi trở nên giỏi trong việc thiết kế cơ sở dữ liệu SQL Server hiệu suất cao hoạt động với lượng lớn dữ liệu và có tải nặng về doanh thu dữ liệu và truy vấn mỗi phút.Tài nguyên cho thiết kế cơ sở dữ liệu SQL Server hiệu suất cao

Đề xuất?

EDIT

Các tải tôi đang nói về chủ yếu là về mặt doanh thu dữ liệu. Bảng chính có tối đa một triệu hàng, khoảng 30 trường dữ liệu có kích thước khác nhau và được cập nhật với khoảng 30-40000 hàng mới mỗi ngày và ít nhất 200000 hàng được cập nhật với dữ liệu mới mỗi ngày. Những cập nhật này diễn ra liên tục suốt cả ngày. Ngày đầu này, tất cả các thay đổi và cập nhật cần phải được kéo từ cơ sở dữ liệu trong suốt cả ngày để giữ một chỉ số Lucene lớn được cập nhật.

+0

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

Trả lời

4

Â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).

+0

Rất cám ơn vì phản hồi chi tiết - sẽ phải trải qua điều này để tiêu hóa tất cả. –

3

Dưới đây là một số tài nguyên về xử lý sự cố và hiệu suất tối ưu hóa trong SQL Server, mà tôi đã tìm thấy thực sự hữu ích:

http://updates.sqlservervideos.com/2009/09/power-up-with-sql-server-sql-server-performance.html

Đặc biệt, sử dụng có hiệu quả các chỉ số có thể là một hoạt động tăng cường rất lớn. Tôi nghĩ rằng hầu hết các ứng dụng web, trong hầu hết các trường hợp, đọc nhiều hơn viết. Ngoài ra, sự sargability của một biểu thức có thể có một tác động nghiêm trọng đến hiệu suất.

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