Uzun süren sorgu / iş
Belirti
Tek bir sorgu/iş saatlerdir çalışıyor, bitmiyor; kaynak tüketiyor ya da başkalarını etkiliyor.
1. Sorguyu ve süresini yakala
Hangi sorgu, ne zamandır çalışıyor, hangi kullanıcı/uygulama?
Oracle
SELECT sid, serial#, sql_id, last_call_et/60 running_min, username FROM v$session WHERE status='ACTIVE' AND type='USER' ORDER BY last_call_et DESC;PostgreSQL
SELECT pid, now()-query_start dur, usename, query FROM pg_stat_activity WHERE state='active' ORDER BY query_start;MySQL
SELECT id, user, time, state, info FROM information_schema.processlist WHERE command='Query' ORDER BY time DESC;SQL Server
SELECT session_id, total_elapsed_time/1000 sec, status, command FROM sys.dm_exec_requests WHERE session_id IN (SELECT session_id FROM sys.dm_exec_sessions WHERE is_user_process = 1) ORDER BY total_elapsed_time DESC;MongoDB
db.currentOp({ active: true, secs_running: { $gt: 60 } })2. İlerliyor mu, takıldı mı
Gerçekten çalışıyor mu yoksa bir lock'ta mi bekliyor? İlerleme göstergesine bak (Oracle v$session_longops, PG pg_stat_progress_* view'ları). Bekliyorsa Bloklama playbook'una geç.
Oracle
SELECT sid, opname, sofar, totalwork, ROUND(sofar/NULLIF(totalwork,0)*100,1) pct, time_remaining FROM v$session_longops WHERE sofar<totalwork;PostgreSQL
SELECT * FROM pg_stat_progress_create_index; -- veya pg_stat_progress_vacuum / _cluster / _analyze3. Karar: bekle mi, kes mi
İlerliyor ve yakında bitecekse bekle (kesmenin rollback maliyeti işi daha da uzatabilir). Takılıysa, yanlış çalışıyorsa veya üretimi etkiliyorsa sonlandır. Kesmeden önce rollback süresini düşün.
4. Gerekirse sonlandır
Sadece sorguyu iptal etmeyi (oturumu koruyarak) tercih et; olmuyorsa oturumu kes.
Oracle
ALTER SYSTEM CANCEL SQL 'sid,serial#'; -- 18c+; olmazsa KILL SESSIONPostgreSQL
SELECT pg_cancel_backend(pid); -- olmazsa pg_terminate_backend(pid)MySQL
KILL QUERY <id>;SQL Server
KILL <session_id>;MongoDB
db.killOp(<opid>)5. Kalıcı çöz
Sorguyu optimize et (index, plan, sayfalama/batch'leme), ağır işleri düşük yoğunluklu saatlere al, gerekiyorsa aşamalı (chunk) çalıştır. Tekrarlayan raporlar için materialized view / read replica düşün.