DBAtlas · Veritabanı operasyon atlası

Bir oturumu / sorguyu izle (trace / profil aç)

Oracle

-- Belirli bir oturum için (10046 olay izleme):
BEGIN
  DBMS_MONITOR.SESSION_TRACE_ENABLE(session_id => 123, serial_num => 4567, waits => TRUE, binds => TRUE);
END;
/
-- Kapatmak için: DBMS_MONITOR.SESSION_TRACE_DISABLE(123, 4567);

DBMS_MONITOR.SESSION_TRACE_ENABLE oturum için 10046 izleme dosyası üretir; iş bitince mutlaka kapatın (izleme yükü ve disk kullanımı olur).

PostgreSQL

LOAD 'auto_explain';
SET auto_explain.log_min_duration = 0;
SET auto_explain.log_analyze = true;
-- Basit alternatif: SET log_min_duration_statement = 0;

auto_explain sorgu planlarını, log_min_duration_statement ise yavaş/tüm sorguları log dosyasına yazar; 0 değeri her sorguyu loglar, log hacmine dikkat.

MySQL

-- performance_schema yaklaşımı (önerilen):
UPDATE performance_schema.setup_consumers SET ENABLED='YES' WHERE NAME LIKE 'events_statements%';
-- Eski/basit yöntem (kullanımdan kaldırılıyor):
SET profiling = 1;
-- sorguyu çalıştır, sonra:
SHOW PROFILES;

performance_schema events_statements ile sorgu izleme yapılır; SET profiling yöntemi eskidir (deprecated) ama oturum bazında hızlı ölçüm sağlar.

SQL Server

CREATE EVENT SESSION [trace_slow] ON SERVER
ADD EVENT sqlserver.sql_statement_completed(
  WHERE duration > 1000000)
ADD TARGET package0.event_file(SET filename=N'trace_slow.xel');
GO
ALTER EVENT SESSION [trace_slow] ON SERVER STATE = START;

Extended Events (XEvents) modern izleme yöntemidir; oturumu oluşturup START ile başlatın, iş bitince STOP/DROP ile durdurun.

MongoDB

db.setProfilingLevel(2)
// 1 = yalnızca yavaş işlemler (slowms eşiği), 0 = kapalı
// Sonuçlar: db.system.profile.find().sort({ ts: -1 }).limit(10)

setProfilingLevel(2) tüm işlemleri system.profile koleksiyonuna kaydeder; üretimde 1 (yalnızca yavaş) tercih edilir, seviye 2 yük getirir.

Redis

MONITOR
# Sunucuya gelen tüm komutları gerçek zamanlı akıtır. Çıkış: Ctrl-C

MONITOR tüm komutları canlı gösterir ancak ciddi başarım düşüşüne yol açar; üretimde kısa süreli ve dikkatli kullanın. Alternatif: SLOWLOG GET.

Elasticsearch

GET my-index/_search
{
  "profile": true,
  "query": { "match": { "title": "elastic" } }
}
// Kalıcı yavaş sorgu izleme: index.search.slowlog.threshold.query.warn ayarı

"profile": true tek bir aramanın sorgu/toplama zaman dökümünü verir; sürekli izleme için slowlog eşikleri ayarlanır.

DBAtlas'ta aç →