Hangi sorguların en fazla miktarda ağ trafiğine neden olduğunu öğrenin


23

Bir üretim SQL sunucusunda veri trafiğindeki aralıklı devasa ani artışlar görüyorum. NETWORK IO'ya neden olan 200Mbit / s'ye kadar olan, sorgu zaman aşımına neden olan bekler. Hangi sonuçların büyük sonuç kümeleri döndürdüğünü nasıl öğrenebilirim?

Yanıtlar:


18

Bunu DMV lerden bulabilirsiniz :

SELECT session_id, num_writes, st.text AS statement_text
FROM sys.dm_exec_connections AS ec
CROSS APPLY sys.dm_exec_sql_text(ec.most_recent_sql_handle) AS st
ORDER BY num_writes DESC

İzlemenin aksine, bu bir Üretim sunucusunda çalıştırmak için tamamen güvenli olmalıdır.


7

SQL Profiler kullanarak üretim verilerinin izini süreceğim ve en büyük okuma ve yazma kodunu / yığınlarını topladım. İzlemeyi yalnızca okuma / yazma işlemlerinde yüksek olan işlemler ve gruplar elde etmek için filtreleyin. Gözünüze uyan bir örnek seçin: 1 milyondan fazla okuma veya yazma diyelim.

Bu çağrıların bir örneğini bir dev / test makinesine götürür ve 'Müşteri İstatistiklerini Dahil Et' seçeneğinin etkin olduğu (Sorgu - Müşteri İstatistiklerini Dahil Et) menüsünde Management Studio'da çalıştırırım. Ardından, müşteri istatistikleri bilgisi olan ayrı bir pencereye sahip olacaksınız: Müşteriden Gönderilen Bayt, Sunucudan Alınan Bayt.

VERİLERİ FİLTRELEMEZLE ÜRETİM DB ÜZERİNE İZLEME ETMEYİNİZ !!! En muhtemel olanı filtreleyin (db, ana bilgisayar adı, neye inandığınıza göre) ve izlemeyi başlatın. Profiler’i :-)’tan sonra kapatmayı unutmayın.

Not: Başka bir güzel seçeneği hatırladım: bir süre boyunca izlem boyunca, aynı zamanda Perfmon kullanarak da veri kaydetmelisiniz (yalnızca IO paramlerini seçti). Profiler, izleme dosyasını ve perfmon veri dosyasını birlikte içe aktarma özelliğine sahiptir. Ve en büyük IO çivisine sahip olduğunuzda orada görebilirsiniz.

PS2: Gaius'un seçeneğinin daha zarif olduğuna katılıyorum. Ama gelecek için büyük cevaplarımı bırakıyorum! :-)


5

Henüz bakmadıysanız, Adam Machanic'in sp_WhoIsActive adlı sitesine göz atmak isteyebilirsiniz. Kısa bir süre önce sp_WhoIsActive'da yerleşik olan ve biri @delta_interval olan farklı özellikleri açıklayan bir dizi blog yazısı yaptı.

Bu sadece size genel olarak en fazla CPU veya I / O alanını göstermez, aynı zamanda şu anda en fazla CPU veya I / O alanını gösterebilir.

Bu özelliğin tam bir açıklaması için aşağıdaki blog serisine göz atın:

http://whoisactive.com/docs/01_background/

Aşağıdaki blog yazısı, sp_WhoIsActive çıktısının nasıl sıralanacağını ve hangi sütunların gösterileceğini açıklıyor:

http://whoisactive.com/docs/24_output/

Bu, kurduğu takip eden güncellemeler bağlantısında mevcut olan yayınlardan biridir.

http://whoisactive.com

Sürüm 11.0, bu yanıtın saati itibariyle kullanılabilir; bu nedenle daha eski bir sürüm kullanıyorsanız yükseltme zamanı gelebilir: D

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.