Belirli bir bekleme süresi göz önüne alındığında, hangi sorguların bu beklemeye neden olduğunu SQL 2000 R2 Server'da nasıl beklersiniz?
Bu özel durumda merak ediyorum async_network_io
.
Belirli bir bekleme süresi göz önüne alındığında, hangi sorguların bu beklemeye neden olduğunu SQL 2000 R2 Server'da nasıl beklersiniz?
Bu özel durumda merak ediyorum async_network_io
.
Yanıtlar:
Bunları kontrol etmenin en sevdiğim yolu Adam Machanic'in mükemmel sp_WhoIsActive saklı proc'unu kullanmak. İşte nasıl kullanılacağı hakkında bir video ve kodu indirmek için bir link:
http://www.brentozar.com/archive/2010/09/sql-server-dba-scripts-how-to-find-slow-sql-server-queries/
Buradaki sonuç, sonuçları kontrol etmek için periyodik olarak çalıştırmanız gerektiğidir. Bu verilerin sizin için periyodik olarak toplanmasını istiyorsanız, Kendra Little'ın sp_WhoIsActive sonuçlarını tabloya kaydetme konusundaki öğreticisini inceleyin:
http://www.littlekendra.com/2011/02/01/whoisactive/
Son olarak, bir sorgu async_network_io için beklediğinde bir şeyin ateşlenmesini istiyorsanız, Extended Events adlı yeni bir araç kullanabilirsiniz. Bu, sihirbazı gerçekleştirebileceğiniz SQL Server motorunun içindeki hata ayıklama noktaları gibi. Açıkçası, şu anda 2008'de kullanmak biraz acı verici.
'async_wait_io' bir bekleme türü değil. Olası ASYNC% bekleme türleri:
Bekleme türleri için birkaç iyi bağlantı:
Geçerli bekleyenleri bulmak için sorguya gitmem:
SELECT req.session_id
,blocking_session_id
,ses.host_name
,DB_NAME(req.database_id) AS DB_NAME
,ses.login_name
,req.status
,req.command
,req.start_time
,req.cpu_time
,req.total_elapsed_time / 1000.0 AS total_elapsed_time
,req.command
,req.wait_type
,sqltext.text
FROM sys.dm_exec_requests req
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS sqltext
JOIN sys.dm_exec_sessions ses
ON ses.session_id = req.session_id
WHERE req.wait_type IS NOT NULL
--WHERE req.wait_type = '?'