SQL Server Management Studio, yürütme süresi milisaniyeye nasıl indirilir


220

SSMS'de bir toplu iş gönderdiğimde (örneğin bir sorgu gerçekleştirdiğimde), durum çubuğunda yürütülmesi gereken süreyi görüyorum. SSMS'yi sorgu süresini milisaniye çözünürlükte gösterecek şekilde yapılandırmak mümkün mü?

İşte ilgi alanı kırmızı daire içine alınmış olarak bahsettiğim bar:

resim açıklamasını buraya girin


3
Sorunuzu gerçekten yanıtlamıyor, ancak sorgunuzun süresini kontrol etmek için SQL Server Profiler'ı (bir günlük aracı) kullanabilirsiniz. Süre milisaniye olarak ölçülür.
AGuyCalledGerald

Yanıtlar:


66

Bunu bulana kadar bununla mücadele ediyordum ...

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

Ayrıca, Özellikler penceresini açarsanız, size yürütme süresi verebilecek büyülü bir "Bağlantı geçen süre" bulabilirsiniz ... Umarım yardımcı olur ...


18
Özellikler penceresiyle ilgili kısım gerçekten bu iş parçacığının cevabıdır. "Geçen Zaman" orada oturuyor ve karşısında size bakıyor.
Eric

Ve şimdi bu cevabı kabul edilen cevap olarak ayarlıyorum, çünkü en doğru olanı.
Michael Goldshteyn

363

Yapmak istediğiniz şey şudur:

set statistics time on

-- your query

set statistics time off

Bu iletinin Mesajlar pencerenizde şöyle görünmesini sağlar:

SQL Server Yürütme Süreleri: CPU süresi = 6 ms, geçen süre = 6 ms.


1
Ancak bu, Mesajlar penceresindeki zamanlamayı koyar, bu da sorguyu gerçekleştirdikten sonra manuel olarak çevirmem gerektiği anlamına gelir. Ayrıca, sonuçlar anlamlı görünmüyor, örneğin: CPU süresi = 1357 ms, geçen süre = 169 ms. Hiper iş parçacıklı 8 çekirdeğim olsa bile (yani, 16 sanal) bu nasıl toplanır?
Michael Goldshteyn

2
@MichaelGoldshteyn, CPU zamanınızın neden daha büyük olduğuna gelince, bunun nedeni çok çekirdekli veya hiper iş parçacıklı bir CPU'nuz olması.

25
@MichaelGoldshteyn 1357/8 = 169.625. Tesadüf?
Dan J

3
@JanJ, DB bellekten her şeyi yapmaz. Genellikle I / O söz konusudur ve I / O daha fazla geçen zaman anlamına gelir.
Michael Goldshteyn

9
@binki 1.555 günlük yorumumun yanlış olduğu konusunda haklısınız.
benizi

125

Aşağıdakilerden birini yaparak Müşteri İstatistiklerini açın :

  • Menü: Sorgu> Müşteri İstatistiklerini Ekle
  • Araç Çubuğu: düğmesini tıklayın (Gerçek Yürütme Zamanını Dahil Et'in yanında)
  • Klavye: Shift-Alt-S

Sonra son 10 exection (artı ortalamalar!) İçin zamanlamaları, IO verilerini ve satır sayılarını vb. Kaydeden yeni bir sekme alırsınız:

resim açıklamasını buraya girin


Kas'2012'den @Ymagine First'in cevabı ile aynı. Yukarıdaki cevaba bakınız ...
Bogdan Bogdanov

O sitenin (ironik bir şekilde) bir SQL hatası vardı, bu yüzden bir Google önbelleğinden anahtar bilgileri çıkardım ve yeni bir cevap olarak gönderdim. Kredi çalmak için bir anlam ifade etmedim ve belki de bunun yerine orijinal cevabı düzenlemeliydim.
NickG

Aslında, soruları düzenlemek için yeterli rep puanım yok gibi görünüyor, bu yüzden muhtemelen bu yüzden yapmadım.
NickG

3
FYI Zaman İstatistikleri için birimler milisaniye cinsindendir: brentozar.com/archive/2012/12/…
congusbongus

17

Proc'unuzda yürütme süresini değişken olarak almak için:

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] 

VE bunu gör

Sorgu Performansını Ölçme: "Yürütme Planı Sorgu Maliyeti" ile "Alınan Zaman"


1
Datepart NS nanosaniyeyi temsil eder, milisaniye için MS kullanın
Milan Matějka

12

Ben aynı şey peşindeydim ve parlak aşağıdaki bağlantı üzerinden tökezledi:

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

Performansı ölçmenin üç farklı yolunu gösterir. Hepsi kendi güçlü yönleri için iyi. Seçtiğim kişi şöyle oldu:


DECLARE @ Time1 DATETIME

DECLARE @ Time2 DATETIME

SET @ Time1 = ALIN ()

- Sorguyu buraya ekle

SET @ Time2 = ALIN ()

TARİHLİ SEÇİN (MILLISECOND, @ Zaman1, @ Zaman2) AS Elapsed_MS


Bu, sorgunuzdaki sonuçları ve ardından tamamlanması gereken süreyi gösterir.

Bu yardımcı olur umarım.



2

Bilgi çubuğunu genişletmeyi bilmiyorum.

Ancak "Mesajlar" sekmesinde gösterilen tüm sorgular için zamanlamaları varsayılan olarak ayarlayabilirsiniz.

Bir Sorgu penceresinde, Sorgu Menüsü öğesine gidin, "sorgu seçenekleri" ni seçin, ardından "Yürütme" grubunda "gelişmiş" i seçin ve "istatistik zamanını ayarla" / "istatistik GÇ ayarla" onay kutularını işaretleyin. Bu değerler daha sonra, ayarlanan istatistikleri açıp kapatmayı hatırlamak zorunda kalmadan, her sorgu için mesaj alanında görünecektir.

İstemci istatistiklerini istediğiniz zaman etkinleştirmek için Üst Karakter + Alt + S tuşlarını da kullanabilirsiniz


0

Bu kodu deneyebilirsiniz:

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.