DBAtlas · 데이터베이스 운영 아틀라스

장시간 실행 작업의 진행률 확인

Oracle

SELECT sid, serial#, opname, target, sofar, totalwork,
       ROUND(sofar / NULLIF(totalwork,0) * 100, 2) AS pct_done,
       time_remaining, elapsed_seconds
FROM v$session_longops
WHERE totalwork > 0 AND sofar < totalwork
ORDER BY start_time;

v$session_longops는 6초 이상 실행되는 작업의 진행률과 남은 시간(time_remaining)을 보여 준다.

PostgreSQL

SELECT pid, phase, heap_blks_total, heap_blks_scanned,
       ROUND(heap_blks_scanned::numeric / NULLIF(heap_blks_total,0) * 100, 2) AS pct
FROM pg_stat_progress_vacuum;
-- Others: pg_stat_progress_create_index, _cluster, _analyze, _copy, _basebackup

pg_stat_progress_* 뷰는 VACUUM, CREATE INDEX, CLUSTER, ANALYZE, COPY 작업의 진행률을 보고한다.

MySQL

SELECT t.processlist_id, st.event_name, st.work_completed, st.work_estimated,
       ROUND(st.work_completed / NULLIF(st.work_estimated,0) * 100, 2) AS pct
FROM performance_schema.events_stages_current st
JOIN performance_schema.threads t ON t.thread_id = st.thread_id
WHERE st.work_estimated > 0;

stage instrumentation이 활성화되어 있으면 events_stages_current가 work_completed/work_estimated로 진행률을 보여 준다(예: ALTER TABLE).

SQL Server

SELECT session_id, command, percent_complete,
       DATEADD(ms, estimated_completion_time, GETDATE()) AS est_finish,
       total_elapsed_time / 1000 AS elapsed_sec
FROM sys.dm_exec_requests
WHERE percent_complete > 0
ORDER BY percent_complete;

sys.dm_exec_requests.percent_complete는 BACKUP, RESTORE, DBCC, 인덱스 재구축 같은 작업의 진행률을 보여 준다.

MongoDB

db.currentOp({ "active": true, "secs_running": { "$gte": 3 } })

db.currentOp 출력에서 장시간 실행 작업과, 인덱스 생성의 경우 'progress' 필드(done/total)가 진행률을 보여 준다.

Redis

INFO persistence
# Keys: rdb_bgsave_in_progress, aof_rewrite_in_progress, rdb_last_bgsave_status, loading, loading_loaded_perc

INFO persistence 섹션은 RDB/AOF 저장 또는 rewrite 작업 진행 여부와 로딩 진행률을 보고한다.

Elasticsearch

GET _tasks?detailed=true&actions=*reindex,*update/byquery,*delete/byquery
# For recovery/shard relocation: GET _cat/recovery?v&active_only=true

_tasks?detailed는 장시간 실행 작업(reindex, update_by_query)의 상태를, _cat/recovery는 진행 중인 샤드 복구 진행률을 보여 준다.

DBAtlas에서 열기 →