SQL Server Management Studio วิธีรับเวลาดำเนินการจนถึงมิลลิวินาที


220

เมื่อฉันส่งแบตช์ (เช่นทำแบบสอบถาม) ใน SSMS ฉันเห็นเวลาที่ใช้ในการดำเนินการในแถบสถานะ เป็นไปได้หรือไม่ที่จะกำหนดค่า SSMS ให้แสดงเวลาสอบถามด้วยความละเอียดมิลลิวินาที?

นี่คือบาร์ที่ฉันกำลังพูดถึงด้วยส่วนที่น่าสนใจวนเป็นสีแดง:

ป้อนคำอธิบายรูปภาพที่นี่


3
ไม่ตอบคำถามของคุณจริงๆ แต่คุณสามารถใช้ SQL Server Profiler (เครื่องมือบันทึกข้อมูล) เพื่อตรวจสอบระยะเวลาในการสืบค้นของคุณ ระยะเวลามีหน่วยวัดเป็นมิลลิวินาที
AGuyCalledGerald

คำตอบ:


66

ฉันกำลังดิ้นรนกับสิ่งนั้นจนกระทั่งฉันพบสิ่งนี้ ...

http://blog.sqlauthority.com/2009/10/01/sql-server-sql-server-management-studio-and-client-statistics/

นอกจากนี้หากคุณเปิดหน้าต่างคุณสมบัติคุณอาจพบว่ามี "เวลาการเชื่อมต่อผ่าน" ที่น่าอัศจรรย์ซึ่งอาจทำให้คุณมีเวลาดำเนินการ ... หวังว่ามันจะช่วย ...


18
ส่วนที่เกี่ยวกับหน้าต่างคุณสมบัติเป็นคำตอบของเธรดนี้จริงๆ "เวลาที่ผ่านไป" กำลังนั่งมองคุณอยู่ตรงหน้า
Eric

และตอนนี้ฉันตั้งค่าคำตอบนี้เป็นคำตอบที่ยอมรับเพราะมันถูกต้องที่สุด
Michael Goldshteyn

363

สิ่งที่คุณต้องการทำคือ:

set statistics time on

-- your query

set statistics time off

ที่จะให้ผลลัพธ์ที่ออกมาเป็นแบบนี้ในหน้าต่างข้อความของคุณ:

เวลาดำเนินการของ SQL Server: เวลา CPU = 6 ms, เวลาที่ผ่านไป = 6 ms


1
แต่สิ่งนี้ทำให้เวลาในหน้าต่างข้อความซึ่งหมายความว่าฉันต้องพลิกมันด้วยตนเองหลังจากทำการค้นหา นอกจากนี้ผลลัพธ์ดูเหมือนจะไม่สมเหตุสมผลเช่น: CPU time = 1357 ms, เวลาที่ผ่านไป = 169 ms จะเพิ่มขึ้นได้อย่างไรแม้ว่าฉันจะมี 8 คอร์ที่มีไฮเปอร์เธรด (เช่น 16 virtual)
Michael Goldshteyn

2
@MichaelGoldshteyn ว่าทำไมเวลาซีพียูของคุณถึงมากขึ้นเป็นเพราะคุณมีซีพียูแบบมัลติคอร์หรือหลายเธรด

25
@MichaelGoldshteyn 1357/8 = 169.625 เหตุบังเอิญ?
Dan J

3
@DanJ, ​​DB ไม่ได้ทำทุกอย่างจากความทรงจำ บ่อยครั้งที่มีส่วนเกี่ยวข้องกับ I / O และ I / O หมายถึงเวลาที่ผ่านไปมากขึ้น
Michael Goldshteyn

9
@binki คุณถูกต้องว่าความคิดเห็น 1,555 วันของฉันไม่ถูกต้อง
benizi

125

เปิดสถิติลูกค้าโดยทำอย่างใดอย่างหนึ่งต่อไปนี้:

  • เมนู: แบบสอบถาม> รวมสถิติลูกค้า
  • แถบเครื่องมือ: คลิกปุ่ม (ถัดจากรวมเวลาดำเนินการจริง)
  • แป้นพิมพ์: Shift-Alt-S

จากนั้นคุณจะได้รับแท็บใหม่ที่บันทึกเวลา, ข้อมูล IO และ rowcounts สำหรับ (สูงสุด) 10 ตัวสุดท้าย (บวกค่าเฉลี่ย!):

ป้อนคำอธิบายรูปภาพที่นี่


มันเหมือนกับคำตอบของ @Ymagine First จาก Nov'2012 ดูคำตอบข้างต้น ...
Bogdan Bogdanov

ไซต์นั้น (แดกดัน) มีข้อผิดพลาด SQL ในเวลานั้นดังนั้นฉันดึงข้อมูลสำคัญจากแคช Google และโพสต์เป็นคำตอบใหม่ ฉันไม่ได้ตั้งใจจะขโมยเครดิตและบางทีฉันควรจะแก้ไขคำตอบเดิมแทน
NickG

ที่จริงแล้วดูเหมือนว่าฉันไม่มีคะแนนตัวแทนเพียงพอที่จะแก้ไขคำถามดังนั้นนั่นอาจเป็นเหตุผลที่ฉันไม่ได้ทำอย่างนั้น
NickG

3
FYI หน่วยสำหรับสถิติเวลามีหน่วยเป็นมิลลิวินาที: brentozar.com/archive/2012/12/..
congusbongus

17

ในการรับเวลาดำเนินการเป็นตัวแปรใน proc ของคุณ:

DECLARE @EndTime datetime
DECLARE @StartTime datetime 
SELECT @StartTime=GETDATE() 

-- Write Your Query


SELECT @EndTime=GETDATE()

--This will return execution time of your query
SELECT DATEDIFF(ms,@StartTime,@EndTime) AS [Duration in millisecs] 

และดูสิ่งนี้

การวัดประสิทธิภาพการค้นหา: "ต้นทุนการดำเนินการแบบสอบถามแผน" เทียบกับ "เวลาที่ใช้"


1
Datepart NS แทน nanosecond สำหรับมิลลิวินาทีใช้ MS
Milan Matějka

12

ฉันเป็นเหมือนเดิมและสะดุดผ่านลิงค์ต่อไปนี้ซึ่งยอดเยี่ยม:

http://www.sqlserver.info/management-studio/show-query-execution-time/

มันแสดงให้เห็นถึงสามวิธีในการวัดประสิทธิภาพ ทุกอย่างดีสำหรับจุดแข็งของตนเอง สิ่งที่ฉันเลือกใช้มีดังนี้:


DECLARE @ Time1 DATETIME

DECLARE @ Time2 DATETIME

SET @ Time1 = GETDATE ()

- แทรกข้อความค้นหาที่นี่

SET @ Time2 = GETDATE ()

เลือก DATEDIFF (MILLISECOND, @ Time1, @ Time2) AS Elapsed_MS


สิ่งนี้จะแสดงผลลัพธ์จากข้อความค้นหาของคุณตามด้วยเวลาที่ใช้ในการดำเนินการให้เสร็จสมบูรณ์

หวังว่านี่จะช่วยได้


ฉันพบว่าไม่แน่นอนบางครั้งแสดงเวลาและบางครั้งก็แสดงให้เห็น 0
RMati

2

ฉันไม่รู้เกี่ยวกับการขยายแถบข้อมูล

แต่คุณจะได้รับการตั้งค่าเวลาเป็นค่าเริ่มต้นสำหรับข้อความค้นหาทั้งหมดที่แสดงในแท็บ "ข้อความ"

เมื่ออยู่ในหน้าต่าง Query ให้ไปที่รายการเมนู Query เลือก "ตัวเลือกแบบสอบถาม" จากนั้นเลือก "ขั้นสูง" ในกลุ่ม "Execution" และทำเครื่องหมายในช่องทำเครื่องหมาย "กำหนดสถิติเวลา" / "กำหนดสถิติ IO" ค่าเหล่านี้จะปรากฏในพื้นที่ข้อความของแต่ละแบบสอบถามโดยไม่ต้องจำไว้ว่าต้องใส่ในและปิดสถิติตั้งค่า

คุณสามารถใช้ Shift + Alt + S เพื่อเปิดใช้งานสถิติลูกค้าได้ตลอดเวลา


0

คุณสามารถลองรหัสนี้:

USE AdventureWorks2012;
GO
SET STATISTICS TIME ON;
GO
SELECT ProductID, StartDate, EndDate, StandardCost 
FROM Production.ProductCostHistory
WHERE StandardCost < 500.00;
GO
SET STATISTICS TIME OFF;
GO
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.