Veri

Yavaş SQL'i bul: db.Explain, Slowest Queries ve tarayıcıdan analiz

ServiceStack v10.4, OrmLite'a typed sorgunun sorgu planını metin olarak döndüren db.Explain() metodunu ekliyor. Profiling Admin UI'a ise en yavaş sorguları listeleyen Slowest Queries görünümü geldi. Bu sayede yavaş SQL'i tarayıcıdan açıklayıp yeniden çalıştırmak mümkün.

Yayın tarihi
Okuma süresi
6 dk okuma
agent çalıştırması #16
agent çalıştırması #16
Orijinale git servicestack.net

Bu haberi bildir

Özette bir hata mı var, ya da bu içeriğin sahibi misin? Mesajın doğrudan bana e-posta olarak gelir.

Mesaj türü

Kilit noktalar

  • db.Explain(q) sorguyu çalıştırmadan plan metnini döndürür; async karşılığı ExplainAsync'tir.
  • analyze: true seçeneği sorguyu çalıştırır, bu yüzden yalnızca güvenli SELECT'lerde kullanın.
  • SCAN veya Seq Scan gibi tam tablo okumaları, eksik index belirtisi olabilir; [Index] attribute'u ile düzeltilebilir.
  • Plan kontrolünü testlere ekleyip index'in bozulmasını build aşamasında yakalayabilirsiniz.
  • ProfilingFeature.SlowQueriesLimit varsayılan olarak 50 en yavaş sorguyu tutar; 0 ile kapatılabilir.
  • RunQueryLimit ile tarayıcıdan yeniden çalıştırılan sorgunun döndürdüğü satır sayısı ayarlanır (varsayılan 20).

Bir sorgu geliştirme ortamında hızlı, production'da yavaş olabilir ve SQL metni tek başına sorunu göstermez. ServiceStack v10.4, OrmLite'ta typed sorgunun veritabanı planını döndüren db.Explain() metodunu ekliyor. Metod sorguyu çalıştırmadan plan metnini verir; analyze seçeneği ise sorguyu gerçekten çalıştırıp her adımın gerçek satır sayısını ve süresini gösterir.

Ayrıca Profiling Admin UI'a Slowest Queries görünümü eklendi. Uygulamanın başlangıcından beri çalışan en yavaş sorgular burada, hangi bağlantıda ve ne zaman çalıştıklarıyla birlikte listelenir. Database Admin eklentisiyle bu sorgular tarayıcıdan explain edilebilir ve yeniden çalıştırılabilir. Analiz ve yeniden çalıştırma yalnızca yetkili kullanıcılara açık ve işlemler geri alınan bir transaction içinde yapılıyor.

Gerçek dünyada kullanımı

  • Yavaş bir liste sayfasının sorgusunu production verisiyle inceleyip eksik index'i bulmak.
  • Repository testlerinde sorgu planının tablo taramasına dönmediğini doğrulamak.
  • Canlı bir ServiceStack uygulamasında en yavaş SQL sorgularını tarayıcıdan izleyip düzeltmek.

Neden önemli

OrmLite kullanan bir ekip artık sorgu planını kod içinden alabilir ve yavaş sorguları veritabanı konsoluna gitmeden tarayıcıdan inceleyebilir. Plan kontrolünü testlere eklemek, index'i kaldıran bir değişikliğin production'a ulaşmasını engeller.

Bu özet, ServiceStack Blog üzerindeki orijinal yazıdan agent tarafından üretildi. Yazının tamamı ve tüm hakları ilgili yazara/yayıncıya aittir. Orijinal yazıya git

Benzer haberler

Geri bildirim

Bir hata mı buldun, bir fikrin mi var? Yazdığın mesaj doğrudan bana e-posta olarak gelir.

Mesaj türü