DBAtlas · Veritabanı operasyon atlası

Bloklayan / lock bekleyen oturumları bul

Oracle

SELECT blocking_session, sid, serial#, username,
       sql_id, seconds_in_wait, event
FROM v$session
WHERE blocking_session IS NOT NULL;

blocking_session dolu olan oturum, blocking_session değerindeki SID tarafından bloklanıyordur.

PostgreSQL

SELECT pid, usename, pg_blocking_pids(pid) AS blocked_by,
       wait_event, query
FROM pg_stat_activity
WHERE cardinality(pg_blocking_pids(pid)) > 0;

blocked_by dizisi, bu pid'i bloklayan PID'leri verir.

MySQL

SELECT * FROM sys.innodb_lock_waits\G
-- MySQL 8: SELECT * FROM performance_schema.data_lock_waits;

sys şeması, bekleyen ve bloklayan trx_id / thread'i okunur biçimde verir.

SQL Server

SELECT r.session_id, r.blocking_session_id,
       r.wait_type, r.wait_time, r.wait_resource
FROM sys.dm_exec_requests r
WHERE r.blocking_session_id <> 0;

blocking_session_id <> 0 olan istekler bloklanmıştır. Zincir için özyinelemeli sorgu kurulabilir.

MongoDB

db.currentOp({ "waitingForLock": true })

WiredTiger belge/koleksiyon düzeyinde kilitler. Uzun işlemleri killOp ile sonlandırabilirsiniz.

Redis

# Uygulanamaz: Redis komutları tek tek atomik çalışır, satır kilidi yoktur.
# En yakın teşhis: SLOWLOG GET 10

Bloklanma genelde uzun süren tek bir komuttan (ör. KEYS *, büyük SORT) kaynaklanır; SLOWLOG bunları gösterir.

DBAtlas'ta aç →