FBMonLogger
FBMonLogger artık HQbird Standard’ın bir parçası!
FBMonLogger, Firebird’deki izleme tablolarının çıktısını analiz etmek ve yavaş SQL sorguları, hatalı tasarlanmış işlemler (uzun süren işlemler, yanlış izolasyon seviyesine sahip işlemler vb.) ile ilgili sorunları bulmak ve sorunlu uygulamaları tespit etmek için kullanılan bir araçtır.
FBMonLogger, performans sorunları olan Firebird veritabanına bağlanabilir ve yavaşlamanın nedenini tespit edebilir: kullanıcı bağlantısı mı, yavaş SQL sorgusu mu yoksa uzun süren işlem mi?
FBMonLogger, Firebird 2.1, 2.5 ve 3.0’ı destekler - daha eski Firebird sürümleri veya InterBase için lütfen FBScanner kullanın.
FBMonLogger size şunları gösterebilir:
- En yüksek IO işlemi, indekssiz ve indeksli okuma sayısına sahip en üst bağlantılar
- En yüksek IO işlemi, indekssiz ve indeksli okuma sayısına sahip en üst SQL ifadeleri
- Sorunlu işlemler: uzun süren işlemler, hatalı izolasyon seviyesine sahip işlemler, okuma/yazma işlemleri ve ilgili bilgiler: ne zaman başladıkları, bu işlemleri hangi uygulamaların başlattığı, hangi IP adresinden, vb.
- En yoğun çöp toplama (garbage collection) işlemlerine sahip bağlantılar ve ifadeler
- Okuma/yazma oranı, INSERT/UPDATE/DELETE oranı ve daha fazlası.
Performans sorunlarını bulmak istediğiniz veritabanına bağlandıktan sonra, izleme tablolarının birkaç anlık görüntüsü alınmalıdır - anlık görüntü almak için «Anlık Görüntü Al» düğmesine tıklayın.
Kullanıcı bağlantıları için toplu performans istatistikleri
İlk ekranda veritabanı bağlantıları için toplu istatistikleri görebilir ve en büyük sorunlara sahip bağlantıları tespit edebiliriz:
Sıralı okumalar / İndeksli okumalar
“Sıralı okumalar / İndeksli okumalar” bize uygulamadaki sıralı (indekssiz) okumalar ile indeksli okumalar arasındaki toplam oranı gösterir. Genellikle indekssiz okuma sayısı düşük olmalıdır, bu nedenle yüksek sıralı okuma yüzdesi, birçok SQL sorgusunun NATURAL yürütme planına sahip olduğunun ve bunların yavaş yanıt süresinin nedeni olabileceğinin bir işaretidir.
«En üst bağlantılar: sıralı/indeksli okumalar» listesindeki bir kayda tıklamak sizi «Bağlantılar» sekmesine götürür; burada Bağlantı hakkında daha fazla ayrıntı görebilir ve ardından «İşlemler» veya «İfadeler» sekmesine geçebilirsiniz; burada seçilen bağlantıyla ilişkili işlemleri ve bağlantıları göreceksiniz («Seçili bağlantıya bağla» onay kutusu işaretliyse, aksi takdirde tüm bağlantılar için tüm işlemler/ifadeler gösterilir).
Yazma ayrıntıları
«Yazma ayrıntıları» size yazma işlemlerine genel bir bakış sunar: tüm veritabanı bağlantıları arasındaki INSERT/UPDATE/DELETE oranı. En çok yazanlar tablosunda en fazla yazma işlemi yapan bağlantıları görebilirsiniz. Aşırı sayıda güncelleme veya silme işlemi gerçekleştiren uygulamaları veya yazılım modüllerini tespit etmek için kullanışlıdır (çöp toplama açısından en tehlikeli işlemler bunlardır).
Çöp toplama ayrıntıları
Çöp toplama işlemleri ne anlama gelir?
- Purge (Temizleme) - motor geri sürümleri kaldırır, veritabanında yalnızca birincil sürüm kalır.
- Expunge (Silme) - hem birincil sürüm hem de tüm geri sürümler silinir.
- Backout (Geri alma) - yalnızca birincil sürüm kaldırılır (geri alma nedeniyle).
Genellikle purge işlemini UPDATE ile, expunge işlemini DELETE ile ve backout işlemini INSERT veya UPDATE’in geri alınmasıyla ilişkilendirebiliriz. Çok sayıda backout, uygulamada işlem yönetimiyle ilgili bir sorun olduğu anlamına gelebilir.
Bellek kullanımı
«Bellek kullanımı» grafiği bize şu anda tüm aktif bağlantılar tarafından kullanılan toplam belleği ve geçmişte onlar için ayrılan belleğin zirvesini gösterir.
Bellek kullanımına göre en üst bağlantılar listesi, bağlantılarınız arasındaki en büyük bellek tüketicilerini gösterir. Aşırı bellek kullanan uygulamaları veya yazılım modüllerini bulmak için kullanışlıdır.
İfadeler için toplu performans istatistikleri
İkinci sekmede ifadeler için toplu performans istatistiklerini bulabilirsiniz. Bu istatistikler veritabanındaki anlık durumu daha iyi yansıtır - izleme tabloları her nesnenin yaşamının başlangıcından itibaren bilgi topladığından, burada görebileceğiniz ifadeler anlık görüntü alındığı anda çalışan ifadelerdir.
Sıralı okumalar / İndeksli okumalar
Bu listede veritabanından çok sayıda sıralı okuma gerçekleştiren en üst ifadeleri görebiliriz. Genellikle bu tür ifadeler SQL ayarı gerektirir - ya indeks ayarıyla ya da SQL sorgusu yeniden tasarımıyla.
Sorguyu ayarlamak için yürütme planını kontrol edin: genellikle yeni indeksler veya sorgu yeniden tasarımı ile planlardaki NATURAL’ı ortadan kaldırarak sorgu hızını artırmak mümkündür. Bu listedeki ifadeye tıklayarak «İfadeler» sekmesini açın; burada seçilen ifade hakkında daha fazla ayrıntı bulabilir ve ilişkili işleme veya bağlantıya geçebilirsiniz.
Sayfa okumaları/sayfa yazmaları
Bu grafik ve liste, çok sayıda okuma gerçekleştiren en üst ifadeler hakkında kısa bilgi gösterir - bu, önemli miktarda IO tükettikleri ve diğer sorguların performansını etkileyebilecekleri anlamına gelir. Zirve değerlere sahip SQL ifadeleri optimum performans için dikkatle kontrol edilmelidir.
İfadeler için yazma ayrıntıları
Bu grafikte, izleme tablolarının anlık görüntüsü alındığı anda hangi yazma SQL ifadelerinin ne yaptığını görebilir ve veritabanında çok sayıda değişiklik yapan UPDATE ve DELETE’leri tespit edebilirsiniz.
İfadeler için çöp toplama ayrıntıları
Bu grafikte, anlık görüntü anında çalışan ifadeler tarafından kaç çöp toplama işlemi yapıldığını görebiliriz.
İfadeler için bellek kullanımı
Bağlantılar için toplu bellek kullanımı istatistiklerinin aksine, ifadelerin bellek kullanımı bize o anda çok fazla bellek tüketen tam ifadelerin listesini gösterebilir.
Bağlantılar
Üçüncü sekme «Bağlantılar»dır. «Toplu performans istatistikleri» bölümündeki kayıtlardan birine tıklayarak bu sekmeyi doğrudan açabilirsiniz.
Bağlantılar, Firebird veritabanına bağlı kullanıcıların listesini birçok yararlı ayrıntıyla gösterir: bağlantının KULLANICI ve ROL’ü, başlangıç zamanı ve bağlantı kimliği, bağlantı için çöp toplama etkin mi, bağlantıyı kuran uzak işlemin adı ve bağlantı için birkaç birikmiş performans sayacı: sıralı okuma sayısı [bağlantının başlangıcından bu yana yapılan], indeksli okuma sayısı, ekleme, güncelleme ve silme sayısı ile kayıt geri alma, temizleme ve silme işlemleri.
Varsayılan olarak bağlantı sütunlarından bazıları kapatılmıştır, yalnızca en önemli bilgiler gösterilir.
Elbette, bir bağlantıya her tıkladığınızda, içinde çalışan işlemlere ve ardından ifadelere geçebilirsiniz. İşlemler ve İfadeler sekmelerinin sol üst köşesinde davranışı kontrol eden bir onay kutusu vardır - işaretlendiğinde, yalnızca seçilen bağlantı kimliğiyle işaretlenmiş işlemler ve ifadeler gösterilir.
İşlemler
«İşlemler» sekmesi, anlık görüntü alındığı anda aktif olan işlemleri gösterir. «Seçili bağlantıya bağla» onay kutusu etkinse, yalnızca seçilen bağlantı için işlemler gösterilir, aksi takdirde tüm işlemler gösterilir.
En önemli özelliklerden biri işlemlerin yaşam süresidir: Firebird kısa yazma işlemleriyle çalışacak şekilde tasarlandığından, işlemleri mümkün olduğunca kısa tutmak önemlidir. FBMonLogger, En Eski Aktif İşlemi tutan ve bu nedenle aşırı kayıt sürümlerinin temizlenmemesine neden olan izolasyon modları ve okuma-yazma ayarlarına sahip işlemleri vurgular. Böyle bir işlem görürseniz ve bir süre önce başlamışsa, aşırı kayıt sürümlerinden sorumlu olabileceği anlamına gelir.
«başlangıç zamanı» sütununa göre sıralayın ve kırmızıyla işaretlenmiş eski işlemleri arayın: tüm yazılabilir işlemler ve salt okunur anlık görüntüler En Eski Aktif İşlemi tutar ve aşırı kayıt sürümlerinin tutulmasına neden olur. Bu işlemlerin nerede başladığını tespit edin (sağ tıklayın ve «Üst bağlantıyı görüntüle» seçeneğini seçin) ve bu işlemi daha erken tamamlamak için kodunuzu düzeltin.
İfadeler
«İfadeler» sekmesi, anlık görüntü anında aktif olan ifadeleri gösterir: tüm ifadeleri yakalamanız gerekiyorsa FBPerfMon veya FBScanner kullanılmalıdır (bu araçların tümü IBSurgeon Optimization Pack’in parçasıdır).
«Seçili bağlantıya bağla» etkinse, yalnızca belirli bağlantı için ifadeler gösterilir, aksi takdirde tüm aktif ifadeler listededir.
Bazı ifadelerin ilişkili işlem kimliği yoktur (=0): bu sorgular hazırlanmış ancak çalıştırılmamıştır.




