“Đăng xuất kiểm tra” trong SQL Server Profiler là gì?


91

Tôi đang chạy nhập dữ liệu (sử dụng C # / Linq) và đương nhiên là tôi đang cố gắng tối ưu hóa các truy vấn của mình nhiều nhất có thể. Để kết thúc điều này, tôi đang chạy theo dõi trên DB bằng SQL Server Profiler, với dấu vết của tôi được lọc theo tên đăng nhập SQL của tôi (đó là tên duy nhất có thể được gán cho quá trình nhập dữ liệu của tôi).

Thật kỳ lạ, hầu hết các câu lệnh SQL của tôi thực sự rất nhanh :) - rất ít truy vấn thậm chí vượt quá mốc 1ms. Nhưng khoảng cách giữa tất cả các truy vấn của tôi là một số hàng trong đó EventClass là "Đăng nhập kiểm tra" hoặc "Đăng xuất kiểm tra" - và thời lượng của "Đăng xuất kiểm tra" có thể lên đến một phút!

Điều này có liên quan gì đến thực tế là tôi đang sử dụng các giao dịch trong quá trình nhập của mình không? Nếu vậy, có cách nào để tìm những truy vấn gây ảnh hưởng lớn để tôi có thể xóa những truy vấn đó không?



Câu trả lời:


81

Nếu tôi nhớ không nhầm thì khoảng thời gian Đăng xuất kiểm tra là khoảng thời gian kết nối được mở. Ví dụ: không liên quan gì đến tốc độ của lệnh - chỉ là khoảng thời gian đăng nhập được 'đăng nhập'.


9
Thú vị, cảm ơn! Nhưng tại sao số lần đọc lại cao như vậy (~ 400.000) khi số lần đọc cho các truy vấn giữa "đăng nhập" và "đăng xuất" chỉ là 56?
Shaul Behr

Nó là số ms từ khi đăng nhập đến khi đăng xuất. Không phải là số lần thực tế các truy vấn trong kết nối được sử dụng. 400 000ms là khoảng 7 phút. Nhìn vào CPU, đọc và ghi các cột để thử và định vị các truy vấn có mức sử dụng CPU và / hoặc đĩa cao - cả hai đều giết chết hiệu suất.
Thies

Tôi xin lỗi, ý bạn có phải là Readsphản hồi cho phép đo thời gian không?
Johnny_D

1
Giá trị "Đọc" khi đăng xuất có vẻ thực sự cao đối với tôi, vì chỉ có một thao tác với 3 lần đọc được liệt kê giữa nó và đăng nhập.
Triynko

1
Cần lưu ý rằng Readscột không đại diện cho các hàng được trả về bởi các truy vấn mà là số lần đọc đĩa logic. Một truy vấn thậm chí không trả về bất kỳ thứ gì có thể quét toàn bộ bảng gồm 1 triệu bản ghi để tìm kiếm không có gì để trả lại sẽ tạo ra một số lượng rất lớn lần đọc. Vì vậy, số lần đọc không thực sự tương quan tự nhiên với số lượng truy vấn.
Nhịp độ

12

Các sự kiện Đăng nhập / Đăng xuất có liên quan đến việc thiết lập / chia nhỏ. IIRC thời gian là 'đã được đăng nhập trong thời gian' thay vì thời lượng xử lý như với các sự kiện nhật ký khác.

Nói chung, người ta ẩn các sự kiện này trừ khi bạn nghi ngờ có vấn đề với quản lý nhóm kết nối, v.v.

Thời gian thô cho các lô phải đủ để chẩn đoán thời gian hoạt động thực tế đang thực hiện bao gồm tác động của bất kỳ giao dịch nào, v.v.


Có thể kiểm tra chi tiết hơn "thiết lập / xé nhỏ" đó không? Vui lòng xem câu hỏi liên quan sau: stackoverflow.com/questions/44920375/…
Stefan

3

Lớp sự kiện Đăng xuất kiểm tra chỉ ra rằng người dùng đã đăng xuất khỏi (đã đăng xuất) Microsoft SQL Server. Các sự kiện trong lớp này được kích hoạt bởi các kết nối mới hoặc bởi các kết nối được sử dụng lại từ một nhóm kết nối.

đó là tổng thời gian kết nối được đăng nhập, bao gồm cả thời gian nhàn rỗi, vì vậy nó không cho thấy sự cố về hiệu suất. Ngoài ra việc lập hồ sơ đăng nhập / đăng xuất rất ít có khả năng gây ra sự cố về hiệu suất. Tốt hơn hết là bạn nên tìm kiếm các truy vấn hoạt động kém, có thể là các truy vấn chạy lâu.

Để biết thêm thông tin, tôi đề xuất https://msdn.microsoft.com/en-us/library/ms175827.aspx :)


1
Bạn có chắc chắn các sự kiện Đăng xuất kiểm tra được kích hoạt khi các kết nối được sử dụng lại từ nhóm kết nối không? Tôi nghĩ hồ kết nối là một ví dụ về lý do tại sao bạn có thể thấy khoảng thời gian Audit Logout cao, bởi vì kết nối được mở nhưng nhàn rỗi nhất trong cuộc đời của nó,
Adam Goodwin

2

Cũng cần lưu ý như trong câu trả lời này rằng Đăng nhập / Đăng xuất Kiểm tra có thể chỉ có nghĩa là kết nối đang được sử dụng lại từ / trở lại nhóm kết nối.

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.