Các khối yêu cầu giám sát thường xuyên vì năng suất của chúng giảm khá thường xuyên (chậm lại trong quá trình xây dựng truy vấn, tăng thời gian xử lý). Để tìm ra lý do giảm, chúng ta cần theo dõi hệ thống của mình. Đối với điều này, chúng tôi sử dụng SQL Server Profiler. Tuy nhiên, Microsoft đang có kế hoạch loại bỏ công cụ truy tìm SQL này trong các phiên bản tiếp theo. Nhược điểm chính của công cụ là cường độ tài nguyên và nó phải được chạy trên máy chủ sản xuất một cách cẩn thận, vì nó có thể gây ra mất năng suất hệ thống nghiêm trọng.
Như vậy, Sự kiện mở rộng là một hệ thống xử lý sự kiện chung cho hệ thống máy chủ. Hệ thống này hỗ trợ mối tương quan của dữ liệu từ SQL Server, cho phép nhận các sự kiện trạng thái của SQL Server.
Kiến trúc hệ thống được hiển thị bên dưới:
Trên thực tế, chúng tôi có một gói chứa Sự kiện, Mục tiêu, Hành động, Loại, Dự đoán và Bản đồ. Các phiên chứa Sự kiện, Mục tiêu, Hành động được chạy trên máy chủ. Tôi sẽ không mô tả chi tiết kiến trúc vì phần trợ giúp chứa mô tả rõ ràng.
Bây giờ, hãy quay lại SSAS của chúng ta. Để làm cho mọi thứ trở nên sinh động hơn, hãy xem xét một số tình huống mà chúng tôi sử dụng để phân tích vấn đề.
Tình huống đầu tiên:Phân tích xử lý khối lập phương (Khối đa chiều)
Nó thường xảy ra khi một khối lập phương được cập nhật trong một thời gian rất dài trong quá trình xử lý, mặc dù khối lượng dữ liệu khá thấp. Để tìm ra lý do, chúng ta cần hiểu truy vấn nào hoặc nơi xử lý nào gây ra hiện tượng chậm máy. Tất nhiên, chúng tôi có thể chạy quá trình xử lý trên Sản xuất và xem những gì đang diễn ra, nhưng tôi không chắc người dùng của bạn sẽ đánh giá cao điều đó. Ở đây Sự kiện mở rộng sẽ hỗ trợ. Hãy chạy phiên của chúng ta và định cấu hình lưu vào một tệp.
Hãy mở SSMS và kết nối với SSAS, sau đó chuyển sang Quản lý.
Bây giờ, hãy tạo một phiên mới:
- Trên tab Chung, chỉ định tên cho phiên của chúng tôi và tải mẫu.
- Sự kiện tab hiển thị các sự kiện sẽ giúp chúng tôi phân tích các vấn đề. Tab có tất cả những người bạn cũ của chúng tôi từ Hồ sơ. Hãy chọn các sự kiện sau để xử lý phân tích: CommandBegin , CommandEnd, Progr essReportBegin và ProgressReportEnd, ResourseUsage.
CommandBegin , CommandEnd sẽ hiển thị phần bắt đầu và phần kết thúc của việc thực thi lệnh trong quá trình xử lý.
Progr essReportBegin và ProgressReportEn cung cấp thông tin mở rộng về độ dài của mỗi sự kiện và hiển thị dữ liệu đọc, thực thi truy vấn SQL, độ dài, v.v.
Cách sử dụng hiển thị số lượng tài nguyên đã được sử dụng để thực hiện một truy vấn, một hành động.
Khi chúng tôi đã chọn các sự kiện, chúng tôi có thể chuyển sang cấu hình từng sự kiện và chỉ định sự kiện nào phải được hiển thị và sự kiện nào phải ẩn (ví dụ:chúng tôi có thể ẩn id quy trình).
- Lưu trữ Dữ liệu chuyển hướng. Tại đây, chúng tôi có thể chỉ định hiển thị các sự kiện ở chế độ thời gian thực hoặc ghi chúng vào tệp:
- event_file - lưu sự kiện vào một tệp để phân tích thêm. Chỉ định kích thước tệp tối đa và đường dẫn đích. Nếu kích thước tệp vượt quá kích thước được chỉ định, một tệp mới sẽ được tạo. Ngoài ra, chúng tôi có thể chỉ định số lượng tệp phải được tạo (số tệp tối đa).
- event_stream - cho phép xem các sự kiện ở chế độ thời gian thực.
- ring_buffer - chỉ định rằng dữ liệu phiên phải được lưu trữ trong bộ nhớ miễn là máy chủ được chạy. Trong trường hợp tải lại, dữ liệu sẽ bị xóa.
- Nâng cao tab cho phép định cấu hình tài nguyên (bộ nhớ, bộ xử lý) cho một phiên nhất định.
Cuối cùng, nhấp vào OK và nhận phiên. Hãy chạy xử lý khối lập phương và xem quá trình xử lý theo các sự kiện. Chuyển sang chế độ dữ liệu trực tiếp.
Ở trên cùng của ảnh chụp màn hình sau, chúng ta có thể thấy các sự kiện diễn ra ngay bây giờ với phiên bản của chúng ta. Chi tiết về các sự kiện được hiển thị ở phía dưới. Bất kỳ giá trị nào của chi tiết sự kiện đều có thể được thêm vào dưới dạng một cột riêng biệt ở trên cùng. Nhấp chuột phải vào giá trị đã chọn của chi tiết sự kiện và xem chúng trong bảng.
Kết quả là, chúng tôi nhận được chế độ xem sau:
Do đó, Sự kiện mở rộng cho phép phân tích quá trình xử lý của chúng tôi ở chế độ thời gian thực. Chúng ta có thể hiểu được lượng thời gian dành cho việc xử lý từng đối tượng, bao nhiêu tài nguyên được sử dụng từ đó. Điều này giúp đưa ra kết luận và tìm ra những điểm yếu. Ngoài ra, chúng tôi không làm quá tải hệ thống và không làm giảm năng suất.
Bạn cũng có thể tạo phiên thông qua XMLA. Bạn có thể truy xuất tập lệnh tại GitHub.
Có thể dừng và xóa phiên thông qua cả SSMS và XMLA.
- Qua SSMS (tuy nhiên, vào năm 2016, lỗi xảy ra và tôi không thể xóa phiên qua giao diện).
- Tập lệnh XMLA - có thể tải xuống tại đây.
Đây là phần đầu tiên của bài viết về Sự kiện mở rộng cho SSAS. Trong phần thứ hai, chúng ta sẽ xem xét một kịch bản phân tích năng suất truy vấn trong khối lập phương, làm việc với tệp theo dõi và phân tích tệp qua Power BI.
Tôi cũng khuyên bạn nên xem các bài đăng trên blog sau:
- Pinal Dave - SQL SERVER - SQL Profiler so với các sự kiện mở rộng
- Chris Web - Hồ sơ, Sự kiện mở rộng và Dịch vụ phân tích. Mặc dù tác giả của bài viết nói rằng Profiler hầu như không được sử dụng trên máy chủ sản xuất, nhưng xác nhận rằng nó có vấn đề với tải máy chủ.
- Brent Ozar - Sự kiện Mở rộng Máy chủ SQL