반응형
설치·접속: PostgreSQL 설치와 접속
부제: 지정한 초 간격으로 쿼리를 다시 돌려 값이 변하는 걸 실시간으로 지켜본다
# psql 안에서 쿼리 끝에 \watch <초> 를 붙인다
# SELECT now()::time AS t, count(*) FROM orders \watch 1
printf 'SELECT now()::time AS t, count(*) AS orders FROM orders \\watch 1\n' | psql -d shop
# Ctrl-C 로 멈춘다
Fri Jul 17 11:59:33 2026 (every 1s)
t | orders
-----------------+--------
11:59:33.138135 | 200
(1 row)
Fri Jul 17 11:59:34 2026 (every 1s)
t | orders
-----------------+--------
11:59:34.139076 | 200
(1 row)
Fri Jul 17 11:59:35 2026 (every 1s)
t | orders
-----------------+--------
11:59:35.140318 | 200
(1 row)\watch는 직전에 실행한 쿼리(또는 뒤에 이어 붙인 쿼리)를 일정 간격으로 되풀이 실행한다. \watch 1이면 1초마다다. 리눅스의 watch 명령을 psql 안으로 들여온 셈이라, 배치 작업이 진행되며 행 수가 늘어나는지, 커넥션 수나 락 상태가 어떻게 변하는지를 새 쿼리를 계속 치지 않고도 지켜볼 수 있다. 메타명령이라 -c로는 실행되지 않고 대화형 세션이나 표준입력으로 넘겨야 한다. 멈추려면 Ctrl-C.
이렇게도 쓴다
활성 커넥션 수를 5초마다 모니터링한다. (조합: pg_stat_activity)
psql -d shop
# SELECT state, count(*) FROM pg_stat_activity GROUP BY state \watch 5
배치가 행을 얼마나 쌓았는지 실시간으로 센다.
psql -d shop
# SELECT count(*) FROM orders \watch 2
테이블 용량이 커지는 추이를 지켜본다. (조합: pg_size_pretty)
psql -d shop
# SELECT pg_size_pretty(pg_total_relation_size('orders')) \watch 3
대기 중인 락이 풀리는지 감시한다. (조합: pg_locks)
psql -d shop
# SELECT count(*) FROM pg_locks WHERE NOT granted \watch 1
셸에서 정해진 시간만 돌리고 자동으로 끊는다. (조합: timeout)
printf 'SELECT count(*) FROM orders \\watch 1\n' | timeout 10 psql -d shop반응형
'명령어 > DB' 카테고리의 다른 글
| [PostgreSQL] SAVEPOINT / ROLLBACK TO — 트랜잭션을 통째로 날리지 않고 한 스텝만 되돌린다 (0) | 2026.08.04 |
|---|---|
| [PostgreSQL] WHEN 조건 트리거 — 값이 실제로 바뀔 때만 발화시켜 no-op UPDATE를 흘려보낸다 (0) | 2026.08.02 |
| [PostgreSQL] DELETE 했는데 용량이 안 줄고 오히려 느려질 때 — VACUUM과 bloat (0) | 2026.08.02 |
| [PostgreSQL] 미사용·중복 인덱스 색출 — pg_stat_user_indexes로 안 쓰는 57MB 걷어내기 (0) | 2026.08.02 |
| [PostgreSQL] pg_trgm GIN — `LIKE '%foo%'` 선행 와일드카드를 인덱스로 (0) | 2026.08.02 |