Điều chỉnh hiệu suất cho Bảng lớn (SQL Server 2008 R2)


14

Bối cảnh:
Tôi có một bảng thực tế trong UAT Phase. Mục tiêu tải 5 năm dữ liệu trong Prod (kích thước dự kiến ​​400 Mn hồ sơ). Hiện tại nó chỉ có 2 năm dữ liệu trong Test.

Tính năng bảng:

  1. Không có kích thước ~ 45
  2. Các biện pháp ~ 30
  3. Các biện pháp không phụ gia và các cột khác ~ 25
  4. Kích thước dữ liệu hiện tại ~ 200 triệu (dữ liệu 2 năm)
  5. Chế độ xem thời gian: 3 chế độ xem theo tháng khác nhau: Tài chính / Lịch / Điều chỉnh (nghĩa là cùng một hàng có thể rơi vào các tháng khác nhau dựa trên chế độ xem mà người đó đang tìm kiếm)
  6. Chỉ một chế độ xem sẽ được yêu cầu tại một thời điểm bởi người dùng. (ví dụ: chỉ một Cột Tháng sẽ được sử dụng trong truy vấn, điều đó ngăn chúng tôi thực hiện phân vùng theo chế độ xem thời gian)
  7. Chỉ mục: 1 Chỉ mục được nhóm trên các khóa tự nhiên (8 cột). Đã tạo 3 chỉ số bao gồm các chỉ mục không được phân cụm một trên mỗi cột trong tháng, bao gồm một vài SK chiều (FK) và tất cả các biện pháp).
  8. Chỉ số rất lớn (tổng cộng 190 GB) vì điều này.
  9. Không gian không hạn chế (phân bổ 1 TB)
  10. 64 GB RAM có sẵn trong máy chủ.
  11. Nén bảng cũng được thực hiện.

Yêu cầu:
Các truy vấn trên bảng Fact này sẽ cho kết quả trong vòng 30 giây (Truy vấn chung chọn tổng (số đo) tham gia vài nhóm Dims theo Dim Values). Các báo cáo được thực hiện trực tiếp trên đầu bảng Fact này.

Vấn đề:
Bất kỳ truy vấn nào bao gồm các cột có sẵn trong Chỉ mục đều hoạt động tốt, nhưng nếu chúng tôi bao gồm bất kỳ cột nào khác không có trong .. Nó rất tệ. Phải mất hơn 5-10 phút. Bất kỳ ai có thể đề xuất một số giải pháp mà nó hoạt động tốt cho bất kỳ thứ nguyên / cột nào chúng tôi chọn. Index có thể giúp đỡ trong tình huống này?

Câu trả lời:


6

Nâng cấp lên SQL Server 2012 và sử dụng các cột . Họ phát triển mạnh trong những yêu cầu này. Nghiêm túc, tải về phiên bản đánh giá và dùng thử. Thả tất cả các chỉ mục, thả chỉ mục được nhóm, chỉ cần thêm một chỉ mục cửa hàng cột không phân cụm trên tất cả các cột và tạo cho nó một vòng xoáy. Tôi đã thấy các trường hợp giống như trường hợp của bạn đã giảm thời gian thực hiện xuống còn 2-3 giây, chủ yếu là do loại bỏ phân đoạn bắt đầu. Một số bài đọc bổ sung:


0

Một khung nhìn được lập chỉ mục sẽ giải quyết vấn đề của bạn? Làm thế nào để cập nhật dữ liệu cần phải được? Bạn có thể tạo chế độ xem được lập chỉ mục cho một vài hoán vị. Nhưng với nhiều nhược điểm và biện pháp đó, bạn có thể nhanh chóng hết chỗ!

Làm thế nào về việc sử dụng SSD?


Dữ liệu sẽ được cập nhật hàng tháng. Sẽ mất bao nhiêu thời gian để cập nhật Chế độ xem?

Nếu truy vấn hiện tại của bạn mất 5-10 phút, thì chế độ xem được lập chỉ mục sẽ mất 5-10 phút. Khi hoàn tất, khi bạn chạy cùng một truy vấn, nó sẽ quay trở lại như thể nó sẽ ra khỏi một bảng (tức là ngay lập tức). Một khung nhìn được lập chỉ mục trước chạy một bit SQL cụ thể. Nếu bạn gửi SQL phù hợp với nó, nó sẽ đưa nó từ chế độ xem được lập chỉ mục, thay vì chạy lại tất cả. Ưu điểm chính của chế độ xem được lập chỉ mục là bạn không cần thay đổi các truy vấn hiện có, họ sẽ tự động sử dụng nó. Nhược điểm là bạn khá nhiều phải tạo một cho một vài kết hợp khác nhau.
Nick.McDilyn

Nhưng tôi không khuyên bạn nên tạo nhiều chế độ xem được lập chỉ mục để tăng tốc mọi thứ - cuối cùng bạn sẽ hết thời gian và dung lượng đĩa. Nó có thể chỉ là một thứ để đưa vào kho vũ khí của bạn.
Nick.McDilyn

và xin vui lòng ... nhìn vào các cột như đề xuất!
Nick.McDilyn
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.