Sử dụng SQL Profiler trên cơ sở dữ liệu đang được sản xuất


28

Là một nhà phát triển, tôi sử dụng SQL Profiler khá thường xuyên. Đây là một công cụ sửa lỗi tốt, cả để theo dõi những gì mã của tôi đang làm và để phân tích các vấn đề về hiệu năng.

Nhưng tôi đã luôn sử dụng nó trên môi trường phát triển của mình và theo cách rất được kiểm soát.

  • Bắt đầu ứng dụng của tôi và đưa nó vào trạng thái cụ thể
  • Bắt đầu một dấu vết trên hồ sơ
  • Thực hiện một chuỗi hành động cụ thể trên ứng dụng của tôi
  • Dừng theo dõi và kiểm tra kết quả.

SQL Profiler có thể được sử dụng thực tế trong môi trường sản xuất không?

Mối quan tâm đầu tiên của tôi là nó sẽ làm giảm hiệu suất.

Mối quan tâm thứ hai của tôi là, bởi vì trong sản xuất, bạn không kích hoạt chính những hành động thú vị đó. Bạn sẽ phải để trình hồ sơ chạy trong một thời gian dài sau đó phân tích kết quả. Tập kết quả sẽ trở nên quá khó sử dụng? (Chiếm quá nhiều dung lượng đĩa và quá khó để truy vấn).

Có ai sử dụng SQL Profiler trong sản xuất không?


1
Nếu bạn biết những gì bạn đang tìm kiếm thì bạn thậm chí có thể không cần theo dõi, ví dụ: dba.stackexchange.com/questions/756/ mẹo
Gaius

Câu trả lời:


19

Sử dụng Sql Server Profiler (công cụ GUI) để theo dõi máy chủ sản xuất không phải là ý kiến ​​hay. Nhưng nó phụ thuộc vào tải. Sử dụng theo dõi sql phía máy chủ (xem các thủ tục sp_trace_XXX ) thay vì nó. Ngoài ra tôi đã tìm thấy bài viết:

Tác động Hiệu suất: Truy tìm hồ sơ so với Truy tìm SQL phía máy chủ ,

Tự động theo dõi phía máy chủ trong SQL Server

Tránh gây ra vấn đề với Profiler

có lẽ nó sẽ được quan tâm và hữu ích

Sách trực tuyến nói:

  • Chạy Profiler từ xa thay vì trực tiếp trên máy chủ
  • Tránh bao gồm các sự kiện xảy ra thường xuyên (ví dụ: Khóa: Có được) trừ khi thực sự cần thiết
  • Chỉ bao gồm các lớp sự kiện cần thiết
  • Chỉ định các bộ lọc giới hạn để giảm số lượng sự kiện
  • Tránh dữ liệu dư thừa (ví dụ: SQL: BatchStarting và SQL: BatchCompleted)
  • Tránh chạy dấu vết lớn với Profiler; thay vào đó hãy xem xét một dấu vết SQL phía máy chủ
  • Giới hạn kích thước tệp theo dõi phía máy chủ và quản lý sử dụng không gian

1
Để giảm thiểu bộ lọc tác động một cách tốt nhất bạn có thể và theo dõi một tệp thông qua các lệnh sp_trace. GUI chạy từ xa sẽ gây ra nhiều tác động nhất nhưng bạn có thể sử dụng nó để dễ dàng tạo tập lệnh với tất cả các bộ lọc mà bạn có thể nhanh chóng sửa đổi để kết xuất thành tập tin thay thế. Đặt # của tệp và kích thước tệp một cách thích hợp.
AndrewQuery

21

Tôi sử dụng SQL Profiler chống lại việc sản xuất mọi lúc. Khi được thực hiện chính xác (lọc để bạn lấy lại một lượng dữ liệu rất nhỏ) đối với máy chủ, rủi ro là rất nhỏ. Truy tìm mọi thứ sẽ là vô ích.


7
  1. Có, hành động giám sát sẽ yêu cầu một số tài nguyên. Chạy nó trên một máy chủ quá tải có thể giết chết nó.

  2. Bạn thực sự sẽ theo dõi tải thực tế: hành động của bạn có thể bị mất trong tiếng ồn của tải này.

Chúng tôi đôi khi chạy nó trên sản xuất. Chủ yếu là với bộ lọc văn bản cho mã cụ thể hoặc với bộ lọc CPU / thời lượng để bẫy các truy vấn chạy lâu hơn. Và chúng tôi không cố gắng nắm bắt các kế hoạch thực hiện XML hoặc một số điều vô nghĩa như vậy

Chìa khóa là để biết những gì bạn đang tìm kiếm: chúng tôi không có xu hướng để nó chạy và bẫy mọi thứ.

Trong trường hợp này, nếu bạn muốn xem kết quả của một số hành động, bạn có thể làm điều đó ngoài giờ không?


2

Profiler sẽ luôn giới thiệu một tác động hiệu suất.

Nếu bạn đang sử dụng SQL Server 2008R2 +, bạn có thể sử dụng các sự kiện mở rộng. Điều này cung cấp nhiều thông tin bạn nhìn thấy trong hồ sơ với một phần của hiệu suất.

Sách giới thiệu trực tuyến http://technet.microsoft.com/en-us/l Library / bb630354 (v = sql.105) .aspx

Tính năng này đã nhận được một bản cập nhật lớn trong SQL Server 2012, hiện bao gồm GUI trong SSMS.

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.