İçeriğe geç
Anasayfa » PostgreSQL – Sistemde çalışan sorgular nasıl görülür?

PostgreSQL – Sistemde çalışan sorgular nasıl görülür?

Merhabalar ,
Bu yazımda Postgresql üzerinde en çok kullanılan dmv’lerden olan pg_stat_activity ‘den kısaca bahsedeceğim.

PostgreSQL kullanan uygulamalarda takılan bekleyen sorguları bulup analiz etmek oldukça önemlidir.
Bu sebeptendir ki pgadmin üzerinde sistem üzerinde anlık olarak çalışan sorguların text bilgisini çalışma sürelerini statusünü gibi bir çok bilgiye bu dmv üzerinden ulaşabiliriz. Aşağıda yazdığım query bu konuda size yardımcı olabilir. Bu sorgu ile PostgreSQL veritabanı üzerine çalışan sorgular ile ilgili bilgiler edinebilirsiniz.

SELECT
CONCAT(
FLOOR(EXTRACT(EPOCH FROM now() - query_start) / 86400), ' D, ', -- Gün
FLOOR(MOD(EXTRACT(EPOCH FROM now() - query_start) / 3600, 24)), ' Hh, ', -- Saat
FLOOR(MOD(EXTRACT(EPOCH FROM now() - query_start) / 60, 60)), ' M, ', -- Dakika
FLOOR(MOD(EXTRACT(EPOCH FROM now() - query_start), 60)), ' S' -- Saniye
) AS runtime,
pid,
usename,
state,
application_name,
client_addr,
query_start
FROM
pg_stat_activity
WHERE
state IN ('active', 'idle in transaction')
AND pid <> pg_backend_pid();

Burada sorguları yorumlarken önemli olan bir noktaya daha deyinmek istiyorum;
Bildiğiniz üzere Hemen hemen her veritabanı sisteminde bir transaction yönetimi vardır.
Uygulamalar transaction’u başlatır işlemi tamamladıktan sonra kapatır sonrasında bir transaction için yeni bir transaction başlatır. Bazı uygulamalar işlem bitmesine rağmen transaction’u commit etmediğinden sorgular çalışıyor olarak görünebilir. Bunu anlayabilmek için yukarıdaki sorguda bulunan state kolonu bizim için önemlidir.
bu kolonda sorgunun statusu “idle in transaction” olarak görünüyor ise Oturum bir transaction başlatmış ancak şu anda herhangi bir sorgu çalıştırmıyor yorumunu yapabiliriz. Sorgunun statusu “idle in transaction” görünüyor ise Oturumda bir transaction (BEGIN) başlatılmış ancak henüz COMMIT veya ROLLBACK ile sonlandırılmamış anlamına gelmektedir.

Keyifli Çalışmalar ;

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir