2009-01-19 48 views
6

Bạn có bất kỳ tiêu chuẩn chính thức hoặc không chính thức nào cho tốc độ truy vấn SQL hợp lý có thể đạt được không? Làm thế nào để bạn thực thi chúng? Giả sử một cơ sở dữ liệu OLTP sản xuất theo tải sản xuất đầy đủ thực tế của một vài chục truy vấn mỗi giây, được trang bị và cấu hình đúng cách.Truy vấn SQL - Làm thế nào Chậm quá chậm?

dụ cá nhân cho mục đích minh họa (không phải là một đề nghị, rất phụ thuộc vào nhiều yếu tố, một số ngoài tầm kiểm soát của bạn):

vọng:

Mỗi đơn vị giao dịch (tuyên bố duy nhất, nhiều câu lệnh SQL từ đầu đến cuối ranh giới giao dịch, hoặc một thủ tục được lưu trữ duy nhất, tùy theo mức nào lớn nhất) phải thực thi trong vòng 1 giây hoặc ít hơn trung bình, không có các ngoại lệ bất thường.

Độ phân giải:

Truy vấn chậm phải được tối ưu hóa theo tiêu chuẩn. Truy vấn chậm cho các báo cáo và phân tích khác được chuyển đến một khối OLAP (trường hợp tốt nhất) hoặc một cơ sở dữ liệu ảnh tĩnh.

(Rõ ràng một số truy vấn thực hiện (Insert/Update/Delete) không thể di chuyển, vì vậy phải được tối ưu hóa, nhưng cho đến nay trong kinh nghiệm của tôi nó được thể đạt được.)

Trả lời

1

Tôi thường đi theo quy tắc thứ hai khi viết/tái cấu trúc các thủ tục được lưu trữ, mặc dù nơi làm việc của tôi không có bất kỳ quy tắc cụ thể nào về điều này. Đó chỉ là cảm giác thông thường của tôi. Kinh nghiệm nói với tôi rằng nếu phải mất đến mười giây hoặc nhiều hơn để thực hiện một thủ tục, mà không thực hiện bất kỳ chèn số lượng lớn lớn, thường có những vấn đề nghiêm trọng trong mã có thể dễ dàng được sửa chữa.

Chúng theo cách phổ biến nhất mà tôi gặp phải trong SP: s với hiệu suất kém là việc sử dụng các chỉ mục không chính xác, khiến cho chỉ mục tốn kém tìm kiếm các hoạt động.

5

Cho rằng bạn không thể mong đợi xác định hiệu năng trên một hệ thống có thể (ít nhất là về mặt lý thuyết) phải chịu các gai tải thoáng qua, bạn muốn SLA hiệu suất của bạn được xác suất. Ví dụ về điều này có thể là:

95% giao dịch để hoàn thành trong vòng 2 giây.
95% truy vấn tìm kiếm (phù hợp hơn cho màn hình tìm kiếm) để hoàn thành trong vòng 10 giây.
95% báo cáo hoạt động để hoàn thành trong vòng 10 giây.

Không thể di chuyển các truy vấn giao dịch và tìm kiếm khỏi hệ thống giao dịch, do đó, các hành động duy nhất bạn có thể thực hiện là điều chỉnh cơ sở dữ liệu hoặc ứng dụng hoặc mua phần cứng nhanh hơn.

Đối với báo cáo hoạt động, bạn cần phải nhẫn tâm về những gì đủ điều kiện làm báo cáo hoạt động. Chỉ báo cáo rằng hoàn toàn cần có quyền truy cập vào dữ liệu cập nhật mới phải được chạy khỏi hệ thống trực tiếp. Các báo cáo thực hiện rất nhiều I/O rất chống lại xã hội trên một hệ thống sản xuất và các lược đồ chuẩn hóa có xu hướng không hiệu quả cho việc báo cáo. Di chuyển bất kỳ báo cáo nào không yêu cầu dữ liệu theo thời gian thực vào kho dữ liệu hoặc một số cơ sở báo cáo riêng biệt khác.

1

O của N là tốt và bất cứ điều gì tồi tệ hơn như N^2 cuối cùng sẽ là quá chậm.

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