SQL profiler có ảnh hưởng đến hiệu suất máy chủ không?


11

Tôi đang đối mặt với một vấn đề trong đó máy chủ sql 2008 không thành công cho một số tải cao. Tôi cần tìm trường hợp tải đó và cần tối ưu hóa mã để nó có thể xử lý tải. Tôi đã tìm thấy trên internet rằng SQL profiler có thể được sử dụng để theo dõi các tương tác cơ sở dữ liệu mà sau này có thể được phân tích để tìm ra điểm chính xác nơi xảy ra sự cố. Tôi cũng đã tìm thấy làm thế nào chúng ta có thể bắt đầu trình hồ sơ sql. Nhưng bây giờ câu hỏi của tôi là bằng cách bắt đầu trình biên dịch sql tôi sẽ ảnh hưởng đến hiệu suất máy chủ?


5
Đúng. Nó phụ thuộc vào cách thức và nơi bạn chạy nó. Thực hiện đúng cách có thể chỉ là một vài phần trăm tải thêm.
Mitch Wheat

3
Các sự kiện mở rộng có thể là một lựa chọn nhẹ hơn.
Martin Smith

Câu trả lời:


10

SQL Server Profiler là một GUI sử dụng SQL Server Trace thông qua phía máy khách. Do tính chất này, có, bạn có thể thấy tác động hiệu suất từ ​​nhẹ đến nghiêm trọng tùy thuộc vào môi trường.

SQL Server Profiler phù hợp chủ yếu để có cái nhìn nhanh về những gì đang xảy ra trên máy chủ (miễn là máy chủ cơ sở dữ liệu có thể xử lý độ trễ thêm). Nó không có ý định được chạy trong thời gian dài. Đối với các dấu vết dài hơn, hãy sử dụng theo dõi phía máy chủ hoặc Sự kiện mở rộng.


+1 thậm chí một dấu vết hồ sơ rất ngắn, tùy thuộc vào nhiều yếu tố, có thể làm tê liệt máy chủ.
Aaron Bertrand

3

Nếu bạn sử dụng theo dõi phía máy chủ , tác động đến hiệu suất có thể được giảm thiểu.


Máy chủ và cơ sở dữ liệu của tôi được cài đặt trên cùng một máy. Bây giờ nếu tôi khởi động trình tạo hồ sơ sql thông qua "phòng quản lý Microsoft SQL -> Công cụ-> Trình lược tả SQL" thì tôi có thể mong đợi mức độ giảm hiệu suất như thế nào và nó dựa trên những yếu tố nào?

Nó dựa trên mức độ bận rộn của máy chủ của bạn, có bao nhiêu sự kiện và bao nhiêu cột mà dấu vết của bạn bao gồm và bộ lọc của bạn. Lọc có thể ảnh hưởng theo cả hai hướng - theo một cách nào đó, nó có thể giảm số lượng hàng được trả về UI (phần thực sự khiến trình lược tả bị tổn thương nhiều hơn dấu vết phía máy chủ), nhưng mặt khác nếu bạn chọn kém bộ lọc (ví dụ textdata LIKE '%foo%') nó có thể có tác dụng ngược lại. Có quá nhiều biến số để cung cấp một số kỳ vọng kỳ diệu, bạn sẽ phải thử nó. Bạn thực sự nên sử dụng một dấu vết phía máy chủ, mặc dù.
Aaron Bertrand

Hãy thử liên kết này nếu bạn không thể truy cập vào bản gốc.
Marc Lopez

3

Tất cả những gì các áp phích trước đã nói là chính xác. Profiler là một ứng dụng, tại một thời điểm, đã sử dụng DMO và hiện sử dụng SMO để ghi lại các sự kiện theo dõi. Điều này thêm một lượng chi phí khổng lồ so với việc sử dụng dấu vết phía máy chủ.

SMO là một API bổ sung một "tầng" bổ sung cho quá trình theo dõi cùng với một ứng dụng khách, Profiler. Theo dõi phía máy chủ sẽ đọc các sự kiện theo dõi trực tiếp từ hàng đợi giao dịch, kết quả là không đáng kể.

Tôi đã có thể chạy dấu vết phía máy chủ trong môi trường Máy chủ SQL xử lý hơn 10.000 giao dịch mỗi giây. Sử dụng Profiler trong các môi trường tương tự sẽ đưa trường hợp cơ sở dữ liệu đến đầu gối của nó. Trong bất kỳ môi trường sản xuất nào, nếu bạn cần theo dõi hoạt động cơ sở dữ liệu luôn sử dụng theo dõi phía máy chủ. Profiler sẽ giết cá thể cơ sở dữ liệu.


2

Có, SQL Server Profiler không ảnh hưởng đến hiệu suất.

Khi bạn theo dõi bằng GUI, tất cả các sự kiện được xử lý và lọc đồng bộ, do đó, các yếu tố như tải máy chủ, độ trễ mạng, sự kiện bạn thu thập và ngay cả khi các sự kiện được thu thập được lưu trữ, tất cả đều góp phần vào chi phí.

Như các câu trả lời khác đã đề xuất, sử dụng theo dõi phía máy chủ thay vì GUI được ưu tiên. Tuy nhiên, phương pháp này không được chấp nhận và thay vào đó nên sử dụng Sự kiện mở rộng . (Lưu ý: ngay cả khi sử dụng Sự kiện mở rộng, nhẹ hơn dấu vết, vẫn có thể thêm một lượng tải không mong muốn vào máy chủ - xem danh sách trong đoạn thứ hai của tôi để nghĩ cách giảm thiểu chi phí khi thiết lập sự kiện phiên.)

Trong trường hợp máy chủ tải nặng, bạn cần hết sức cẩn thận về thông tin được thu thập, vì chính quá trình đo có thể ảnh hưởng đến vấn đề đang được điều tra.


0

SQL Server Profiler hoạt động theo hai bước: đầu tiên bạn bảo nó ghi nhật ký tất cả các truy vấn. Sau đó, bạn chạy một số giao dịch điển hình (hoặc chỉ để nó đăng nhập so với sản xuất). Điều này tạo ra một "tải thử nghiệm". Sau đó, bạn thực hiện hồ sơ thực tế (phân tích) bằng cách sử dụng tải thử nghiệm.

Việc ghi nhật ký không quá tốn kém, đặc biệt là so với chi phí của các truy vấn.


Máy chủ và cơ sở dữ liệu của tôi được cài đặt trên cùng một máy. Bây giờ nếu tôi khởi động trình tạo hồ sơ sql thông qua "phòng quản lý Microsoft SQL -> Công cụ-> Trình lược tả SQL" thì tôi có thể mong đợi mức độ giảm hiệu suất như thế nào và nó dựa trên những yếu tố nào?
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.