SSMS
 sql >> Cơ Sở Dữ Liệu >  >> Database Tools >> SSMS

Thời gian thực thi truy vấn trong Management Studio &trình biên dịch. Nó đo lường cái gì?

Nếu tôi hiểu đúng câu hỏi của bạn, trước tiên bạn đang đặt câu hỏi về sự khác biệt giữa Khoảng thời gian được Hồ sơ báo cáo và số liệu thống kê được trình bày trong SSMS (ở góc dưới bên phải cho thời gian chung và / hoặc bằng cách BẬT THỜI GIAN THỐNG KÊ). Thêm vào đó, bạn dường như không tin vào nhận xét của DBA sản xuất rằng chế độ xem đang thực thi trong khoảng thời gian dự kiến ​​là ~ 60 giây.

Đầu tiên, từ Books Online, các tĩnh mà SSMS sẽ báo cáo lại thông qua ĐẶT THỜI GIAN THỐNG KÊ BẬT:

"Hiển thị số mili giây cần thiết để phân tích cú pháp, biên dịch và thực thi mỗi câu lệnh."

Bạn đang chú ý đến điều này. Đối với Thời lượng trong Hồ sơ, nó được mô tả là:

"Thời lượng (tính bằng micro giây) của sự kiện đó."

Từ chỗ tôi ngồi, hai cái này phải tương đương về mặt chức năng (và, như tôi chắc rằng bạn đã nhận thấy, Profiler sẽ báo cáo trong micro giây nếu bạn đi ngược lại với SQL 2005 trở lên). Tôi nói điều này bởi vì "sự kiện" trong trường hợp này (liên quan đến Thời lượng trong Hồ sơ) là việc thực hiện lựa chọn, bao gồm phân phối cho khách hàng; điều này nhất quán trong cả hai trường hợp.

Có vẻ như bạn nghi ngờ rằng địa lý là thủ phạm gây ra thời gian dài khi thực hiện truy vấn từ xa. Điều này rất có thể là. Bạn có thể kiểm tra điều này bằng cách thực hiện lựa chọn trên dạng xem trong một cửa sổ truy vấn, sau đó tạo một cửa sổ truy vấn khác và xem xét kiểu chờ trên truy vấn:

select
    a.session_id
    ,a.start_time
    ,a.status
    ,a.command
    ,db_name(a.database_id) as database_name
    ,a.blocking_session_id
    ,a.wait_type
    ,a.wait_time
    ,a.cpu_time
    ,a.total_elapsed_time
    ,b.text
from sys.dm_exec_requests a
    cross apply sys.dm_exec_sql_text(a.sql_handle) b
where a.session_id != @@spid;

Tôi nghi ngờ rằng bạn sẽ thấy một cái gì đó như ASYNC_NETWORK_IO là kiểu chờ nếu địa lý là vấn đề - nếu không, hãy kiểm tra điều gì xảy ra với điều này. Nếu bạn đang Lập hồ sơ truy vấn thực thi từ xa của mình, Thời lượng sẽ phản ánh thống kê thời gian bạn thấy trong SSMS. TUY NHIÊN, nếu bạn đang sử dụng Hồ sơ và nhận thấy rằng thời lượng của truy vấn này khi được thực thi từ một trong các máy chủ web mà nằm trong cùng một trung tâm dữ liệu như SQL Server vẫn mất 7 phút, thì DBA là một kẻ nói dối lớn, béo :). Tôi sẽ sử dụng Hồ sơ để ghi lại các truy vấn mất hơn 1 phút, cố gắng lọc chế độ xem của bạn và lấy mức trung bình để xem liệu bạn có đạt mục tiêu về hiệu suất hay không.

Bởi vì không có câu trả lời nào khác được đăng, tôi lo ngại rằng tôi đang rời khỏi cơ sở ở đây - nhưng đã muộn và tôi mới làm quen với điều này nên tôi nghĩ mình sẽ thử!



  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Tạo tập lệnh dựa trên điều kiện

  2. Làm cách nào để lập trình phím tắt để chọn 1000 * hàng đầu từ bảng đã chọn?

  3. Truy vấn TSQL trả về giá trị cho mỗi giờ trong 24 giờ qua

  4. Kết nối từ xa với MS SQL - Lỗi khi sử dụng pyodbc so với thành công khi sử dụng SQL Server Management Studio

  5. CTRL + R không ẩn cửa sổ Kết quả Truy vấn trong SSMS