일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 프로그래머스 여행경로
- 게임 개발 파이썬
- 다중 컬럼 NOT IN
- 램프 파이썬
- 프로그래머스 등굣길
- 백준 1516 게임 개발
- 프로그래머스 순위 파이썬
- 가장 긴 바이토닉 부분 수열 파이썬
- 백준 2146 다리 만들기
- 트리의 지름 파이썬
- 다리 만들기 파이썬
- SQL SERVER MIGRATION
- 백준 1613 역사
- 백준 1238 파티 파이썬
- 반도체 설계 파이썬
- 백준 2352 반도체 설계 파이썬
- 등굣길 파이썬
- 프로그래머스 가장 긴 팰린드롬
- 순위 파이썬
- 백준 1043 거짓말 파이썬
- 백준 11054.가장 긴 바이토닉 부분 수열
- 백준 1167 트리의 지름 파이썬
- SWEA
- 백준 1034 램프 파이썬
- SQL SERVER 장비교체
- 가장 긴 팰린드롬 파이썬
- 역사 파이썬
- 베스트앨범 파이썬
- 프로그래머스 순위
- 프로그래머스 베스트앨범
- Today
- Total
공부, 기록
PostgreSQL 대기, 잠금 본문
PostgreSQL의 LOCK에 대한 개념을 알고 싶어서 작성.
wait와 lock을 확인하기 위한 방법
- 성능 개선 도우미를 확인한다 (Aurora)
- pg_stat_activity : 프로세스 수준의 다양한 정보를 제공하는 시스템 뷰
https://www.postgresql.org/docs/16/monitoring-stats.html#MONITORING-PG-STAT-ACTIVITY-VIEW - pg_locks : 데이터베이스 서버 내 현재 활동 중인 프로세스가 소유 및 대기 중인 Lock 정보를 제공하는 시스템 뷰
https://www.postgresql.org/docs/16/view-pg-locks.html
pg_locks와 pg_stat_activity를 통해 현재 Lock을 소유한 프로세스(Holder)와 대기하고 있는 프로세스(Waiter) 정보를 관련 쿼리와 함께 조회해 볼 수 있습니다.
---- pg_locks와 pg_stat_activity를 통해 현재 Lock을 소유한 프로세스(Holder)와 대기하고 있는 프로세스(Waiter) 정보를 관련 쿼리
SELECT current_timestamp AS db_time,
waiter_pid,
w_info.usename AS waiter_user ,
w_info.query AS waiter_query ,
w_info.query_start AS waiter_query_start ,
case
when EXTRACT(EPOCH from current_timestamp - w_info.query_start ) < 0 then 0
else EXTRACT(EPOCH from current_timestamp - w_info.query_start )
end as waiter_elapsed_time,
holder_pid ,
h_info.usename AS holder_user ,
h_info.query AS holder_query ,
h_info.query_start AS holder_query_start,
case
when EXTRACT(EPOCH from current_timestamp - h_info.query_start ) < 0 then 0
else EXTRACT(EPOCH from current_timestamp - h_info.query_start )
end as holder_elapsed_time
FROM (
SELECT snaptime,
locktype,
waiter_pid,
w_cnt,
h_cnt ,
CASE
WHEN h_cnt=Max(h_cnt) OVER(partition BY waiter_pid) THEN holder_pid
END AS holder_pid
FROM (
SELECT current_timestamp AS snaptime,
blocked_locks.locktype AS locktype,
blocked_locks.pid AS waiter_pid,
count(*) over(partition BY blocked_locks.pid) AS w_cnt,
count(*) over(partition BY blocking_locks.pid) h_cnt,
blocking_locks.pid AS holder_pid
FROM pg_catalog.pg_locks blocked_locks
JOIN pg_catalog.pg_locks blocking_locks
ON blocking_locks.locktype = blocked_locks.locktype
AND blocking_locks.DATABASE IS NOT DISTINCT
FROM blocked_locks.DATABASE
AND blocking_locks.relation IS NOT DISTINCT
FROM blocked_locks.relation
AND blocking_locks.page IS NOT DISTINCT
FROM blocked_locks.page
AND blocking_locks.tuple IS NOT DISTINCT
FROM blocked_locks.tuple
AND blocking_locks.virtualxid IS NOT DISTINCT
FROM blocked_locks.virtualxid
AND blocking_locks.transactionid IS NOT DISTINCT
FROM blocked_locks.transactionid
AND blocking_locks.classid IS NOT DISTINCT
FROM blocked_locks.classid
AND blocking_locks.objid IS NOT DISTINCT
FROM blocked_locks.objid
AND blocking_locks.objsubid IS NOT DISTINCT
FROM blocked_locks.objsubid
AND blocking_locks.pid != blocked_locks.pid
WHERE NOT blocked_locks.granted ) t ) t2
JOIN pg_catalog.pg_stat_activity w_info
ON w_info.pid = t2.waiter_pid
JOIN pg_catalog.pg_stat_activity h_info
ON h_info.pid = t2.holder_pid
WHERE holder_pid IS NOT null;
----결과----
db_time |waiter_pid|waiter_user|waiter_query |waiter_query_start |waiter_elapsed_time|holder_pid|holder_user|holder_query |holder_query_start |holder_elapsed_time|
-----------------------------+----------+-----------+----------------------------------------------------+-----------------------------+-------------------+----------+-----------+----------------------------------------------------+-----------------------------+-------------------+
2024-04-30 12:08:49.078 +0900| 2914359|postgresdt |update lock_test set c2 = 'row_update' where c1 = 1;|2024-04-30 12:07:55.777 +0900| 53.301024| 2914369|postgresdt |update lock_test set c2 = 'row_update' where c1 = 1;|2024-04-30 12:07:50.784 +0900| 58.294596|
2024-04-30 12:08:49.078 +0900| 2914369|postgresdt |update lock_test set c2 = 'row_update' where c1 = 1;|2024-04-30 12:07:50.784 +0900| 58.294596| 2914377|postgresdt |update lock_test set c2 = 'row_update' where c1 = 1;|2024-04-30 12:07:45.711 +0900| 63.366759|
----pg_locks와 pg_class에 대한 조회를 통해 프로세스가 소유 및 대기하고 있는 Lock에 대한 상세 정보를 확인
select l.locktype, t.relname, pid, mode, granted, waitstart
from pg_locks l
left join pg_class t on l.relation = t.oid
where l.pid in (2914359,2914369,2914377)
order by pid, locktype, relname;
locktype |relname |pid |mode |granted|waitstart |
-------------+--------------+-------+----------------+-------+-----------------------------+
relation |lock_test |2914359|RowExclusiveLock|true | |
relation |lock_test_pkey|2914359|RowExclusiveLock|true | |
transactionid| |2914359|ExclusiveLock |true | |
tuple |lock_test |2914359|ExclusiveLock |false |2024-04-30 12:07:55.783 +0900|
virtualxid | |2914359|ExclusiveLock |true | |
relation |lock_test |2914369|RowExclusiveLock|true | |
relation |lock_test_pkey|2914369|RowExclusiveLock|true | |
transactionid| |2914369|ShareLock |false |2024-04-30 12:07:50.790 +0900|
transactionid| |2914369|ExclusiveLock |true | |
tuple |lock_test |2914369|ExclusiveLock |true | |
virtualxid | |2914369|ExclusiveLock |true | |
relation |lock_test |2914377|RowExclusiveLock|true | |
relation |lock_test_pkey|2914377|RowExclusiveLock|true | |
transactionid| |2914377|ExclusiveLock |true | |
virtualxid | |2914377|ExclusiveLock |true |
Locking Mode |
Access Share |
Row Share |
Row Exclusive |
Share Update Exclusive |
Share | Share Row Exclusive |
Exclusive | Access Exclusive |
SQL Commands |
Access Share |
X | SELECT | |||||||
Row Share |
X | X | SELECT FOR UPDATE/SHARE |
||||||
Row Exclusive |
X | X | X | X | INSERT, UPDATE, DELETE |
||||
Share Update Exclusive |
X | X | X | X | X | VACUUM, ALTER TABLE, CREATE INDEX CONCURRENTLY |
|||
Share | X | X | X | X | X | CREATE INDEX | |||
Share Row Exclusive |
X | X | X | X | X | X | CREATE TRIGGER, ALTER TABLE |
||
Exclusive | X | X | X | X | X | X | X | REFRESH MAT.VIEW CONCURRENTLY | |
Access Exclusive |
X | X | X | X | X | X | X | X | DROP, TRUNCATE, VACUUM FULL, LOCK TABLE, ALTER TABLE, REFRESH MAT.VIEW |
처음 4개 모드에서는 테이블 데이터의 동시 변경이 허용되지만, 그 다음 4개 모드에서는 허용되지 않습니다
Wait Event Type | 설명 |
Activity | 서버 프로세스가 유휴(Idle) 상태에 있으며, 이 Wait Event Type은 하나의 프로세스가 그와 관련된 Processing Loop 내부 활동을 기다리고 있음을 지칭함 |
BufferPin | 서버 프로세스가 어떠한 Data Buffer에 대해 Exclusive 모드로 접근하고자 할 때, 해당 프로세스에 생길 수 있는 Wait 유형 만약 다른 프로세스가 해당 Buffer에서 데이터를 읽고 Open Cursor를 가지고 있다면, BufferPin Wait은 길어질 수 있음 |
Client | 서버 프로세스가 사용자 애플리케이션에 연결된 소켓의 활동을 기다릴 때 생길 수 있는 Wait 유형 이 Wait Type에서 서버 프로세스는 내부 프로세스와는 무관한 작업이 수행되기를 기다림. |
Extension | 서버 프로세스가 Extension 모듈 실행에 따른 필요 조건이 설정되는 것을 기다릴 때 발생하는 Wait 유형 |
IO | 서버 프로세스가 I/O 작업이 완료되기를 기다릴 때 생길 수 있는 Wait 유형 |
IPC | 서버 프로세스가 다른 서버 프로세스들과의 상호 작용을 기다릴 때 생길 수 있는 Wait 유형 |
Lock | 서버 프로세스가 Heavyweight Lock을 요청하고 기다릴 때 발생하는 Wait 유형 Lock Manager Lock 또는 간단하게 Lock 이라고도 불리는 Heavyweight Lock은 테이블과 같은 SQL-Level에서 바로 확인할 수 있는 Object들을 주요 대상으로 하여 보호함 Relation Extension과 같은 내부 작업에 대한 상호 배제(Mutual Exclusion) 상황을 보장하기 위해 사용되기도 함 |
LWLock | 서버 프로세스가 Lightweight Lock을 기다릴 때 발생하는 Wait 유형 대부분의 Lightweight Lock은 Shared Memory 내부의 특정 데이터 구조를 보호함 일부는 특정 이름을 가지고 있는 Lightweight Lock, 그 외에는 비슷한 목적을 가진 Lock 그룹의 일부분 (래치와 같은 용도로 보입니) |
Timeout | 서버 프로세스가 Timeout이 만료되기를 기다릴 때 발생하는 Wait 유형 |
PostgreSQL은 Row-level Lock의 정보를 메모리가 아닌 Tuple의 Header에서 관리합니다.
해당 기능으로 인하여 비교적 많은 수의 Lock도 메모리의 영향 없이 사용이 가능합니다.
또한 Wait Queue manage 기능을 사용하여 Tuple에 대한 Lock을 획득 및 해제하는 과정을 처리합니다.
→ 해당 구조로 인하여 대량의 락을 사용할 수 있지만 데이터, 버퍼에 추가적인 I/O가 발생하게되는 단점 또한 있습니다.
PostgreSQL의 Lock 과 CPU
Row-level Lock, Table-level Lock 의 경우 대기하는 세션은 CPU를 사용하지 않습니다.
No-Waiting Lock (Spin Lock 과 LW Lock 이 대표적) Lock을 요청 했을 때 리소스가 잠겨 있는 상태라면 대기하지 않고 즉시 실패처리하는 Lock으로 매번 요청을 위해 CPU가 상승할 수 있습니다.
postgreSQL의 객체 잠금 수준
객체란 주로 관계 , 즉 테이블, 인덱스, 시퀀스, 구체화된 뷰를 의미하지만, 다른 엔터티도 있습니다
객체 잠금은 서버의 공유 메모리에 저장됩니다. 잠금의 수는 두 매개변수 값의 곱으로 제한됩니다
잠금의 수 = max_locks_per_transaction × max_connections
대기 중인 트랜잭션은 프로세서 리소스를 소모하지 않습니다. 관련된 백엔드 프로세스는 "sleep" 상태로 리소스가 해제되면 OS에 의해 깨어납니다.
PostgreSQL은 데드락을 자동으로 감지하고 트랜잭션 중 하나를 중단하여 다른 트랜잭션이 계속 진행될 수 있도록 합니다
VACUUM 의 Lock
기본적으로 VACUUM, VACUUM ANALYZE, VACUUM FREEZE 는 DML 에 대한 LOCK 이 없으나 (Access Share 락 사용) 다음과 같은 상황에서는 발생 할 수 있다고 합니다
- VACUUM 중 DDL 충돌
- VACUUM FREEZE 작업 중 인덱스 재구성
- AUTO VACCUM 과 수동 VACUUM 의 충돌
큰 작업을 하기 전 TABLE AGE, VACUUM 작동 여부를 파악하고 진행하는 것이 좋을 것 같습니다.
AURORA
Client:ClientRead | 이 이벤트는 Aurora PostgreSQL이 클라이언트에서 데이터를 수신하기 위해 대기 중일 때 발생합니다. |
Client:ClientWrite | 이 이벤트는 Aurora PostgreSQL이 클라이언트에 데이터를 쓰기 위해 대기 중일 때 발생합니다. |
CPU | 이 이벤트는 스레드가 CPU에서 활성 상태이거나 CPU를 대기 중일 때 발생합니다. |
IO:BufFileRead 및 IO:BufFileWrite | 이러한 이벤트는 Aurora PostgreSQL이 임시 파일을 만들 때 발생합니다. |
IO:DataFileRead | 이 이벤트는 공유 메모리에서 페이지를 사용할 수 없기 때문에 연결이 백엔드 프로세스에서 저장소에서 필요한 페이지를 읽도록 대기할 때 발생합니다. |
IO:XactSync | 이 이벤트는 데이터베이스가 Aurora 스토리지 하위 시스템이 일반 트랜잭션의 커밋을 승인하거나 준비된 트랜잭션의 커밋 또는 롤백을 확인할 때까지 대기 중일 때 발생합니다. |
IPC:DamRecordTxAck | 이 이벤트는 데이터베이스 활동 스트림을 사용하는 세션에서 Aurora PostgreSQL이 활동 스트림 이벤트를 생성한 다음 해당 이벤트가 지속될 때까지 기다리는 경우에 발생합니다. |
Lock:advisory | 이 이벤트는 PostgreSQL 애플리케이션이 잠금을 사용하여 여러 세션에서 활동을 조정할 때 발생합니다. |
Lock:extend | 이 이벤트는 백엔드 프로세스가 릴레이션을 확장하기 위해 릴레이션을 잠그기를 기다리는 동안 다른 프로세스에서 동일한 목적으로 해당 릴레이션에 대한 잠금이 있는 경우에 발생합니다. |
Lock:Relation | 이 이벤트는 쿼리가 현재 다른 트랜잭션에 의해 잠긴 테이블 또는 뷰에 대한 잠금을 얻기 위해 대기 중일 때 발생합니다. |
Lock:transactionid | 이 이벤트는 트랜잭션이 행 수준 잠금을 대기 중일 때 발생합니다. |
Lock:tuple | 이 이벤트는 백엔드 프로세스가 튜플에 대한 잠금 획득을 대기 중일 때 발생합니다. |
LWLock:buffer_content (BufferContent) | 이 대기 이벤트는 다른 세션에서 특정 데이터 페이지에 대해 쓰기 잠금을 설정한 동안 세션에서 메모리 내 해당 페이지 읽기 또는 쓰기를 대기 중일 때 발생합니다. |
LWLock:buffer_mapping | 이 이벤트는 세션이 데이터 블록을 공유 버퍼 풀의 버퍼와 연결하기 위해 대기 중일 때 발생합니다. |
LWLock:BufferIO(IPC:BufferIO) | 이 이벤트는 Aurora PostgreSQL 또는 RDS for PostgreSQL이 페이지에 동시에 액세스하려고 할 때 다른 프로세스가 입출력(I/O) 작업을 완료할 때까지 기다리는 경우에 발생합니다. |
LWLock:lock_manager | 이 이벤트는 Aurora PostgreSQL 엔진이 빠른 경로 잠금이 불가능할 때 잠금을 할당, 확인 및 할당 해제하기 위해 공유 잠금 메모리 영역을 유지 관리하는 경우에 발생합니다. |
LWLock:MultiXact | 이러한 유형의 이벤트는 테이블의 동일한 행과 관련된 여러 트랜잭션을 완료하기 위해 Aurora PostgreSQL이 세션을 열린 상태로 유지할 때 발생합니다. 대기 이벤트는 다중 트랜잭션 처리의 요소, 즉 LWLock:MultixactOffsetBuffset Buffer, LWlock:MultixactMemberSLRU 또는 LWLock:MultixActMemberBuffer 중 무엇이 대기 이벤트를 생성하는지를 표시합니다. |
Timeout:PgSleep | 이 이벤트는 서버 프로세스가 pg_sleep 함수 및 절전 시간 초과가 만료될 때까지 대기할 때 발생합니다. |
Activity: ArchiverMain | 아카이버 프로세스가 활동을 기다리고 있습니다. |
Activity: AutoVacuumMain | autovacuum 시작 관리자 프로세스가 활동을 기다리고 있습니다. |
Activity: BgWriterHibernate | 백그라운드 라이터 프로세스가 활동을 기다리는 동안 최대 절전 모드로 전환됩니다. |
Activity: BgWriterMain | 백그라운드 라이터 프로세스가 활동을 기다리고 있습니다. |
Activity: CheckpointerMain | 체크포인터 프로세스가 활동을 기다리고 있습니다. |
Activity: LogicalApplyMain | 논리적 복제 적용 프로세스가 활동을 기다리고 있습니다. |
Activity: LogicalLauncherMain | 논리적 복제 시작 관리자 프로세스가 활동을 기다리고 있습니다. |
Activity: PgStatMain | 통계 수집기 프로세스가 활동을 기다리고 있습니다. |
Activity: RecoveryWalAll | 프로세스가 복구 시 스트림에서 미리 쓰기 로그(WAL)를 기다리고 있습니다. |
Activity: RecoveryWalStream | 스타트업 프로세스는 스트리밍 복구 중에 미리 쓰기 로그(WAL)가 도착할 때까지 대기 중입니다. |
Activity: SysLoggerMain | syslogger 프로세스가 활동을 기다리고 있습니다. |
Activity: WalReceiverMain | 미리 쓰기 로그(WAL) 수신기 프로세스가 활동을 기다리고 있습니다. |
Activity: WalSenderMain | 미리 쓰기 로그(WAL) 발신자 프로세스가 활동을 기다리고 있습니다. |
Activity: WalWriterMain | 미리 쓰기 로그(WAL) 라이터 프로세스가 활동을 기다리고 있습니다. |
BufferPin: BufferPin | 버퍼에서 독점 핀을 획득하기 위해 프로세스가 기다리고 있습니다. |
Client: GSSOpenServer | GSSAPI 세션을 설정하는 동안 프로세스가 클라이언트에서 데이터를 읽기를 기다리고 있습니다. |
Client: ClientRead | 백엔드 프로세스가 PostgreSQL 클라이언트에서 데이터를 수신하기 위해 대기 중입니다. |
Client: ClientWrite | 백엔드 프로세스가 PostgreSQL 클라이언트로 더 많은 데이터를 발신하기 위해 대기 중입니다. |
Client: LibPQWalReceiverConnect | 프로세스가 원격 서버에 연결을 생성하기 위해 미리 쓰기 로그 수신기(WAL)에서 대기 중입니다. |
Client: LibPQWalReceiverReceive | 프로세스가 원격 서버에서 데이터를 수신하기 위해 미리 쓰기 로그 수신기(WAL)에서 대기 중입니다. |
Client: SSLOpenServer | 프로세스가 연결을 시도하는 동안 SSL을 기다리고 있습니다. |
Client: WalReceiverWaitStart | 스타트업 프로세스가 스트리밍 복제를 위한 초기 데이터를 전송하기를 기다리고 있습니다. |
Client: WalSenderWaitForWAL | 프로세스가 WAL 발신자 프로세스에서 미리 쓰기 로그(WAL)가 플러시될 때까지 기다리고 있습니다. |
Client: WalSenderWriteData | WAL 발신자 프로세스에서 미리 쓰기 로그 (WAL) 수신자의 응답을 처리할 때 프로세스가 모든 활동을 기다리고 있습니다. |
CPU | 백엔드 프로세스가 CPU에서 활성 상태이거나 CPU를 기다리고 있습니다. |
Extension: extension | 백엔드 프로세스가 확장 또는 모듈에 의해 정의된 조건을 기다리고 있습니다. |
IO: AuroraOptimizedReadsCacheRead | 공유 메모리에서 페이지를 사용할 수 없기 때문에 프로세스가 최적화된 읽기 계층형 캐시에서 읽기를 기다리고 있습니다. |
IO: AuroraOptimizedReadsCacheSegmentTruncate | 프로세스가 최적화된 읽기 계층형 캐시 세그먼트 파일이 잘릴 때까지 기다리고 있습니다. |
IO: AuroraOptimizedReadsCacheWrite | 백그라운드 라이터 프로세스가 최적화된 읽기 계층형 캐시에 쓰기를 기다리고 있습니다. |
IO: AuroraStorageLogAllocate | 세션이 메타데이터를 할당하고 트랜잭션 로그 쓰기를 준비하고 있습니다. |
IO: BufFileRead | 작업 중 임시 파일에서 읽을 때 발생합니다. |
IO: BufFileWrite | 작업 중 임시 파일에서 쓸 때 발생합니다. |
IO: ControlFileRead | 프로세스가 pg_control 파일에서 읽기를 기다리고 있습니다. |
IO: ControlFileSync | 프로세스가 pg_control 파일이 내구성 있는 스토리지에 도달하기를 기다리고 있습니다. |
IO: ControlFileSyncUpdate | 프로세스가 pg_control 파일이 내구성 있는 스토리지에 도달하도록 업데이트를 기다리고 있습니다. |
IO: ControlFileWrite | 프로세스가 pg_control 파일에서 쓰기를 기다리고 있습니다. |
IO: ControlFileWriteUpdate | 프로세스가 pg_control 파일 업데이트를 위해 쓰기를 기다리고 있습니다. |
IO: CopyFileRead | 파일 복사 작업 중에 프로세스가 읽기를 기다리고 있습니다. |
IO: CopyFileWrite | 파일 복사 작업 중에 프로세스가 쓰기를 기다리고 있습니다. |
IO: DataFileExtend | 프로세스가 관계식 데이터 파일이 확장될 때까지 기다리고 있습니다. |
IO: DataFileFlush | 프로세스가 관계식 데이터 파일이 내구성 있는 스토리지에 도달할 때까지 기다리고 있습니다. |
IO: DataFileImmediateSync | 프로세스가 관계식 데이터 파일이 내구성 있는 스토리지에 즉시 동기화될 때까지 기다리고 있습니다. |
IO: DataFilePrefetch | 프로세스가 관계식 데이터 파일에서 비동기 프리페치를 기다리고 있습니다. |
IO: DataFileSync | 프로세스가 내구성 있는 스토리지에 도달하기 위해 관계 데이터 파일의 변경 사항을 기다리고 있습니다. |
IO: DataFileRead | 백엔드 프로세스가 공유 버퍼에서 페이지를 찾으려고 시도했지만 찾지 못했으므로 저장소에서 읽었습니다. |
IO: DataFileTruncate | 프로세스가 관계식 데이터 파일이 잘릴 때까지 기다리고 있습니다. |
IO: DataFileWrite | 프로세스가 관계식 데이터 파일에 쓰기를 기다리고 있습니다. |
IO: DSMFillZeroWrite | 프로세스가 동적 공유 메모리 백업 파일에 0바이트를 쓰기를 기다리고 있습니다. |
IO: LockFileAddToDataDirRead | 프로세스가 데이터 디렉토리 잠금 파일에 행을 추가하는 동안 읽기를 기다리고 있습니다. |
IO: LockFileAddToDataDirSync | 프로세스가 데이터 디렉토리 잠금 파일에 줄을 추가하는 동안 데이터가 내구성 있는 스토리지에 도달하기를 기다리고 있습니다. |
IO: LockFileAddToDataDirWrite | 프로세스가 데이터 디렉토리 잠금 파일에 행을 추가하는 동안 쓰기를 기다리고 있습니다. |
IO: LockFileCreateRead | 프로세스가 데이터 디렉토리 잠금 파일을 만드는 동안 읽기를 기다리고 있습니다. |
IO: LockFileCreateSync | 프로세스가 데이터 디렉토리 잠금 파일을 만드는 동안 데이터가 내구성 있는 스토리지에 도달하기를 기다리고 있습니다. |
IO: LockFileCreateWrite | 프로세스가 데이터 디렉토리 잠금 파일을 만드는 동안 쓰기를 기다리고 있습니다. |
IO: LockFileReCheckDataDirRead | 프로세스가 데이터 디렉토리 잠금 파일을 다시 확인하는 동안 읽기를 기다리고 있습니다. |
IO: LogicalRewriteCheckpointSync | 프로세스가 체크포인트 중에 내구성 있는 스토리지에 도달하기 위해 논리적 재쓰기 매핑을 기다리고 있습니다. |
IO: LogicalRewriteMappingSync | 프로세스가 논리적 재작성 중에 데이터가 내구성 있는 스토리지에 도달할 때까지 기다리고 있습니다. |
IO: LogicalRewriteMappingWrite | 프로세스가 논리적 재작성 중에 매핑 데이터의 쓰기를 기다리고 있습니다. |
IO: LogicalRewriteSync | 프로세스가 논리적 재작성 매핑이 내구성 있는 스토리지에 도달할 때까지 기다리고 있습니다. |
IO: LogicalRewriteTruncate | 프로세스가 논리적 재작성 중에 매핑 데이터의 절단을 기다리고 있습니다. |
IO: LogicalRewriteWrite | 프로세스가 논리적 재작성 매핑 쓰기를 기다리고 있습니다. |
IO: RelationMapRead | 프로세스가 관계식 맵 파일의 읽기를 기다리고 있습니다. |
IO: RelationMapSync | 프로세스가 관계식 맵 파일이 내구성 있는 스토리지에 도달할 때까지 기다리고 있습니다. |
IO: RelationMapWrite | 프로세스가 관계식 맵 파일에 대한 쓰기를 기다리고 있습니다. |
IO: ReorderBufferRead | 재정렬 버퍼 관리 중에 프로세스가 읽기를 기다리고 있습니다. |
IO: ReorderBufferWrite | 재정렬 버퍼 관리 중에 프로세스가 쓰기를 기다리고 있습니다. |
IO: ReorderLogicalMappingRead | 재정렬 버퍼 관리 중에 프로세스가 읽기를 기다리고 있습니다. |
IO: ReplicationSlotRead | 프로세스가 복제 슬롯 제어 파일에서 읽기를 기다리고 있습니다. |
IO: ReplicationSlotRestoreSync | 프로세스가 복제 슬롯 제어 파일을 메모리에 복원하는 동안 내구성 있는 스토리지에 도달할 때까지 기다리고 있습니다. |
IO: ReplicationSlotSync | 프로세스가 복제 슬롯 제어 파일이 내구성 있는 스토리지에 도달할 때까지 기다리고 있습니다. |
IO: ReplicationSlotWrite | 프로세스가 복제 슬롯 제어 파일에 쓰기를 기다리고 있습니다. |
IO: SLRUFlushSync | 프로세스가 체크포인트 또는 데이터베이스 종료 중 가장 오래 전에 사용된 단순데이터가 내구성 있는 스토리지에 도달할 때까지 기다리고 있습니다. |
IO: SLRURead | 프로세스가 가장 오래 전에 사용된 단순(SLRU) 페이지의 읽기를 기다리고 있습니다. |
IO: SLRUSync | 프로세스가 페이지 쓰기 후 가장 오래 전에 사용된 단순(SLRU) 데이터가 내구성 있는 스토리지에 도달할 때까지 기다리고 있습니다. |
IO: SLRUWrite | 프로세스가 가장 오래 전에 사용된 단순(SLRU) 페이지의 쓰기를 기다리고 있습니다. |
IO: SnapbuildRead | 프로세스가 직렬화된 기록 카탈로그 스냅샷의 읽기를 기다리고 있습니다. |
IO: SnapbuildSync | 프로세스가 직렬화된 기록 카탈로그 스냅샷이 내구성 있는 스토리지에 도달하기를 기다리고 있습니다. |
IO: SnapbuildWrite | 프로세스가 직렬화된 기록 카탈로그 스냅샷의 쓰기를 기다리고 있습니다. |
IO: TimelineHistoryFileSync | 프로세스가 스트리밍 복제를 통해 수신된 타임라인 기록 파일이 내구성 있는 스토리지에 도달하기를 기다리고 있습니다. |
IO: TimelineHistoryFileWrite | 프로세스가 스트리밍 복제를 통해 수신된 타임라인 기록 파일의 쓰기를 기다리고 있습니다. |
IO: TimelineHistoryRead | 프로세스가 타임라인 기록 파일의 읽기를 기다리고 있습니다. |
IO: TimelineHistorySync | 프로세스가 새로 생성된 타임라인 기록 파일이 내구성 있는 스토리지에 도달하기를 기다리고 있습니다. |
IO: TimelineHistoryWrite | 프로세스가 새로 생성된 타임라인 기록 파일의 쓰기를 기다리고 있습니다. |
IO: TwophaseFileRead | 프로세스가 2단계 상태 파일의 읽기를 기다리고 있습니다. |
IO: TwophaseFileSync | 프로세스가 2단계 상태 파일이 내구성 있는 스토리지에 도달할 때까지 기다리고 있습니다. |
IO: TwophaseFileWrite | 프로세스가 2단계 상태 파일의 쓰기를 기다리고 있습니다. |
IO: WALBootstrapSync | 프로세스가 부트스트래핑 중에 미리 쓰기 로그(WAL)가 내구성 있는 스토리지에 도달할 때까지 기다리고 있습니다. |
IO: WALBootstrapWrite | 프로세스가 부트스트래핑 중에 미리 쓰기 로그(WAL) 페이지의 쓰기를 기다리고 있습니다. |
IO: WALCopyRead | 프로세스는 기존 세그먼트를 복사하여 새 미리 쓰기 로그(WAL) 세그먼트를 만들 때 읽기를 기다리고 있습니다. |
IO: WALCopySync | 프로세스는 기존 세그먼트를 복사하여 생성한 새 미리 쓰기 로그(WAL)가 내구성 있는 스토리지에 도달할 때까지 기다리고 있습니다. |
IO: WALCopyWrite | 프로세스는 기존 세그먼트를 복사하여 새 미리 쓰기 로그(WAL) 세그먼트를 만들 때 쓰기를 기다리고 있습니다. |
IO: WALInitSync | 프로세스가 새로 초기화된 미리 쓰기 로그(WAL) 파일이 내구성 있는 스토리지에 도달할 때까지 기다리고 있습니다. |
IO: WALInitWrite | 프로세스가 새 미리 쓰기 로그(WAL) 파일을 초기화하는 동안 쓰기를 기다리고 있습니다. |
IO: WALRead | 프로세스가 미리 쓰기 로그(WAL) 파일에서 읽기를 기다리고 있습니다. |
IO: WALSenderTimelineHistoryRead | 프로세스가 WAL 발신자 타임라인 명령 중에 타임라인 기록 파일에서 읽기를 기다리고 있습니다. |
IO: WALSync | 프로세스가 미리 쓰기 로그(WAL) 파일이 내구성 있는 스토리지에 도달할 때까지 기다리고 있습니다. |
IO: WALSyncMethodAssign | 프로세스는 새로운 미리 쓰기 로그(WAL) 동기화 방법을 할당하면서 데이터가 내구성 있는 스토리지에 도달할 때까지 기다리고 있습니다. |
IO: WALWrite | 프로세스가 미리 쓰기 로그(WAL) 파일에서 읽기를 기다리고 있습니다. |
IO: XactSync | 백엔드 프로세스는 스토리지 하위 시스템이 일반 트랜잭션의 커밋 또는 준비된 트랜잭션의 커밋 또는 롤백을 확인할 때까지 기다리고 있습니다. |
IPC: BackupWaitWalArchive | 프로세스가 백업이 성공적으로 아카이빙되는 데 필요한 미리 쓰기 로그(WAL) 파일을 기다리고 있습니다. |
IPC: AuroraOptimizedReadsCacheWriteStop | 프로세스는 백그라운드 라이터가 최적화된 읽기 계층형 캐시에 쓰기를 중지하기를 기다리고 있습니다. |
IPC: BgWorkerShutdown | 프로세스가 백그라운드 작업자가 종료될 때까지 기다리고 있습니다. |
IPC: BgWorkerStartup | 프로세스가 백그라운드 작업자가 시작할 때까지 기다리고 있습니다. |
IPC: BtreePage | 프로세스가 병렬 B-트리 스캔을 계속 사용할 수 있도록 하는 데 필요한 페이지 번호를 기다리고 있습니다. |
IPC: CheckpointDone | 프로세스가 체크포인트가 완료될 때까지 기다리고 있습니다. |
IPC: CheckpointStart | 프로세스가 체크포인트가 시작될 때까지 기다리고 있습니다. |
IPC: ClogGroupUpdate | 프로세스가 그룹 리더가 트랜잭션이 끝날 때 트랜잭션 상태를 업데이트하기를 기다리고 있습니다. |
IPC: DamRecordTxAck | 백엔드 프로세스에서 데이터베이스 활동 스트림 이벤트를 생성했으며 이벤트가 지속될 때까지 기다리고 있습니다. |
IPC: ExecuteGather | 프로세스가 Gather 계획 노드를 실행하는 동안 자식 프로세스의 활동을 기다리고 있습니다. |
IPC: Hash/Batch/Allocating | 프로세스가 선택된 병렬 해시 참여자가 해시 테이블을 할당하기를 기다리고 있습니다. |
IPC: Hash/Batch/Electing | 프로세스가 해시 테이블을 할당하기 위해 병렬 해시 참여자를 선택합니다. |
IPC: Hash/Batch/Loading | 프로세스가 다른 병렬 해시 참여자가 해시 테이블 로딩을 마칠 때까지 기다리고 있습니다. |
IPC: Hash/Build/Electing | 프로세스가 초기 해시 테이블을 할당하기 위해 병렬 해시 참여자를 선택합니다. |
IPC: Hash/Build/HashingInner | 프로세스가 다른 병렬 해시 참여자가 내부 관계 해싱을 완료할 때까지 기다리고 있습니다. |
IPC: Hash/Build/HashingOuter | 프로세스가 다른 병렬 해시 참여자가 외부 관계 파티셔닝을 마칠 때까지 기다리고 있습니다. |
IPC: HashGrowBatches/Allocating | 프로세스가 선택된 병렬 해시 참여자가 더 많은 배치를 할당하기를 기다리고 있습니다. |
IPC: HashGrowBatches/Deciding | 프로세스에서 병렬 해시 참여자를 선택하여 향후 배치 증가를 결정합니다. |
IPC: HashGrowBatches/Electing | 프로세스에서 병렬 해시 참여자를 선택하여 더 많은 배치를 할당합니다. |
IPC: HashGrowBatches/Finishing | 프로세스는 선출된 병렬 해시 참여자가 향후 배치 증가를 결정할 때까지 기다리고 있습니다. |
IPC: HashGrowBatches/Repartitioning | 프로세스가 다른 병렬 해시 참여자가 다시 파티셔닝을 완료할 때까지 기다리고 있습니다. |
IPC: HashGrowBuckets/Allocating | 프로세스가 선택된 병렬 해시 참여자가 더 많은 버킷 할당을 완료할 때까지 기다리고 있습니다. |
IPC: HashGrowBuckets/Electing | 프로세스가 더 많은 버킷을 할당하기 위해 병렬 해시 참여자를 선택합니다. |
IPC: HashGrowBuckets/Reinserting | 프로세스가 다른 병렬 해시 참여자가 새 버킷에 튜플 삽입을 마칠 때까지 기다리고 있습니다. |
IPC: LogicalSyncData | 프로세스가 논리적 복제 원격 서버가 초기 테이블 동기화를 위해 데이터를 보낼 때까지 대기 중입니다. |
IPC: LogicalSyncStateChange | 프로세스가 논리적 복제 원격 서버가 상태를 변경하기를 기다리고 있습니다. |
IPC: MessageQueueInternal | 프로세스가 다른 프로세스가 공유 메시지 대기열에 연결될 때까지 기다리고 있습니다. |
IPC: MessageQueuePutMessage | 프로세스가 공유 메시지 대기열에 프로토콜 메시지를 쓰기 위해 대기 중입니다. |
IPC: MessageQueueReceive | 프로세스가 공유 메시지 대기열에서 바이트를 수신하기 위해 대기 중입니다. |
IPC: MessageQueueSend | 프로세스가 공유 메시지 대기열로 바이트를 전송하기 위해 대기 중입니다. |
IPC: ParallelBitmapScan | 프로세스가 병렬 비트맵 스캔이 초기화되기를 기다리고 있습니다. |
IPC: ParallelCreateIndexScan | 프로세스가 병렬 CREATE INDEX 작업자가 힙 스캔을 완료할 때까지 기다리고 있습니다. |
IPC: ParallelFinish | 프로세스가 병렬 작업자가 컴퓨팅을 완료할 때까지 기다리고 있습니다. |
IPC: ProcArrayGroupUpdate | 프로세스가 병렬 작업이 끝날 때 그룹 리더가 트랜잭션 ID를 지울 때까지 기다리고 있습니다. |
IPC: ProcSignalBarrier | 프로세스가 모든 백엔드에서 배리어 이벤트가 처리되기를 기다리고 있습니다. |
IPC: Promote | 프로세스가 대기 프로모션을 기다리고 있습니다. |
IPC: RecoveryConflictSnapshot | 프로세스가 베큠 클린업을 위해 복구 충돌 해결을 기다리고 있습니다. |
IPC: RecoveryConflictTablespace | 프로세스가 테이블스페이스를 삭제하기 위한 복구 충돌 해결을 기다리고 있습니다. |
IPC: RecoveryPause | 프로세스가 복구가 재개될 때까지 기다리고 있습니다. |
IPC: ReplicationOriginDrop | 프로세스가 복제 원본이 비활성화되어 삭제할 수 있도록 기다리고 있습니다. |
IPC: ReplicationSlotDrop | 프로세스가 복제 슬롯이 비활성화되어 삭제할 수 있도록 기다리고 있습니다. |
IPC: SafeSnapshot | 프로세스가 읽기 전용 연기 가능 트랜잭션에 대해 유효한 스냅샷을 얻기 위해 기다리고 있습니다. |
IPC: SyncRep | 프로세스가 동기식 복제 중에 원격 서버로부터의 확인을 기다리고 있습니다. |
IPC: XactGroupUpdate | 프로세스가 병렬 작업이 끝날 때 그룹 리더가 트랜잭션 상태를 업데이트하기를 기다리고 있습니다. |
Lock : Advisory | 백엔드 프로세스에서 권고 잠금을 요청하고 기다리고 있습니다. 자세한 내용은 Lock |
백엔드 프로세스는 잠금이 해제되기를 기다리고 있습니다. 한 번에 하나의 백엔드 프로세스만 관계를 확장할 수 있기 때문에 이 잠금이 필요합니다. | |
Lock : Extend | 프로세스가 pg_database.datfrozenxid와 pg_database.datminmxid의 업데이트를 위해 대기 중입니다. |
프로세스가 비관계 데이터베이스 객체에 대한 잠금을 얻기 위해 기다리고 있습니다. | |
Lock : Frozenid | 프로세스가 관계 페이지에서 잠금을 받기 위해 기다리고 있습니다. |
Lock : Object | 백엔드 프로세스가 다른 트랜잭션에 의해 잠긴 관계에 대한 잠금을 획득하기 위해 기다리고 있습니다. |
Lock : Page | 투기적 삽입 잠금을 얻기 위해 프로세스가 기다리고 있습니다. |
Lock : Relation | 투기적 삽입 잠금을 얻기 위해 프로세스가 기다리고 있습니다. |
트랜잭션이 행 수준 잠금을 대기 중입니다. | |
Lock : Spectoken | 백엔드 프로세스는 튜플에 대한 잠금을 얻기 위해 기다리고 있으며 다른 백엔드 프로세스는 동일한 튜플에서 충돌하는 잠금을 유지합니다. |
Lock : Speculative Token | 프로세스가 사용자 잠금을 받기 위해 기다리고 있습니다. |
Lock : Transactionid | 프로세스가 가상 트랜잭션 ID 잠금을 받기 위해 기다리고 있습니다. |
Lock : Tuple | 프로세스가 공유 메모리에서 확장 프로그램의 공간 할당을 관리하기 위해 기다리고 있습니다. |
Lock : Userlock | 프로세스가 공유 메모리의 공간 할당을 관리하기 위해 기다리고 있습니다. |
Lock : Virtualxid | 프로세스가 비동기(알림) 버퍼에서 I/O를 기다리고 있습니다. |
LWLock : AddinShmemInit | 프로세스가 공유 알림 상태를 읽거나 업데이트하기 위해 기다리고 있습니다. |
LWLock : AddinShmemInitLock | 프로세스가 알림 메시지를 읽거나 업데이트하기 위해 기다리고 있습니다. |
LWLock : Async | 프로세스가 데이터 블록을 최적화된 읽기 계층형 캐시의 페이지와 연결하기 위해 기다리고 있습니다. |
LWLock : AsyncCtlLock | 프로세스가 postgresql.auto.conf 파일을 업데이트하기 위해 대기 중입니다. |
LWLock : AsyncQueueLock | 프로세스가 postgresql.auto.conf 파일을 업데이트하기 위해 대기 중입니다. |
LWLock : AuroraOptimizedReadsCacheMapping | 프로세스가 autovacuum 작업자의 현재 상태를 읽거나 업데이트하기 위해 대기 중입니다. |
LWLock : AutoFile | autovacuum 작업자 또는 시작 관리자가 autovacuum 작업자의 현재 상태를 업데이트하거나 읽기를 기다리고 있습니다. |
LWLock : AutoFileLock | 프로세스가 autovacuum용으로 선택된 테이블에 여전히 베큠이 필요한지 확인하기 위해 기다리고 있습니다. |
LWLock : Autovacuum | 프로세스가 난수를 생성하기 위해 기다리고 있습니다. |
LWLock : AutovacuumLock | 프로세스가 백그라운드 작업자 상태를 읽거나 업데이트하기 위해 기다리고 있습니다. |
LWLock : AutovacuumSchedule | 프로세스가 백그라운드 작업자 상태를 읽거나 업데이트하기 위해 대기 중입니다. |
LWLock : BackendRandomLock | 프로세스가 B-트리 인덱스에 대한 베큠 관련 정보를 읽거나 업데이트하기 위해 대기 중입니다. |
LWLock : BackgroundWorker | 프로세스가 B-트리 인덱스에 대한 베큠 관련 정보를 읽거나 업데이트하기 위해 대기 중입니다. |
LWLock : BackgroundWorkerLock | 백엔드 프로세스가 공유 메모리 버퍼의 내용에 대한 경량 잠금을 획득하기 위해 대기 중입니다. |
LWLock : BtreeVacuum | 백엔드 프로세스가 데이터 블록을 공유 버퍼 풀의 버퍼와 연결하기 위해 기다리고 있습니다. |
LWLock : BtreeVacuumLock | 백엔드 프로세스에서 페이지를 공유 메모리로 읽으려고 합니다. 다른 프로세스가 해당 페이지에 대한 I/O를 완료할 때까지 기다리고 있습니다. |
LWLock : BufferContent | 프로세스가 체크포인트 시작을 기다리고 있습니다. |
LWLock : BufferMapping | 프로세스가 체크포인트 수행을 기다리고 있습니다. |
LWLock : BufferIO | 프로세스가 fsync 요청 관리를 기다리고 있습니다. |
LWLock : Checkpoint | 프로세스가 fsync 요청 관리를 기다리고 있습니다. |
LWLock : CheckpointLock | 프로세스가 클록(트랜잭션 상태) 버퍼에서 I/O를 기다리고 있습니다. |
LWLock : CheckpointerComm | 프로세스가 트랜잭션 상태를 읽거나 업데이트하기 위해 대기 중입니다. |
LWLock : CheckpointerCommLock | 프로세스가 txid_status를 실행하거나 사용 가능한 가장 오래된 트랜잭션 ID를 업데이트하기 위해 대기 중입니다. |
LWLock : Clog | 프로세스가 커밋 타임스탬프 버퍼에서 I/O를 기다리고 있습니다. |
LWLock : CLogControlLock | 프로세스가 트랜잭션 커밋 타임스탬프에 대한 마지막 값 세트를 읽거나 업데이트하기 위해 대기 중입니다. |
LWLock : CLogTruncationLock | 프로세스가 커밋 타임스탬프를 위해 가장 오래전에 사용된 단순(SLRU) 버퍼에서 I/O를 기다리고 있습니다. |
LWLock : CommitTimestamp | 프로세스가 트랜잭션 커밋 타임스탬프를 읽거나 업데이트하기를 기다리고 있습니다. |
LWLock : CommitTs | 프로세스가 트랜잭션 타임스탬프에 대한 마지막 값 세트를 읽거나 업데이트하기 위해 대기 중입니다. |
LWLock : CommitTsBuffer | 프로세스가 커밋 타임스탬프에 대해 가장 오래전에 사용된 단순(SLRU) 캐시에 액세스하기 위해 대기 중입니다. |
LWLock : CommitTsControlLock | 프로세스가 pg_control 파일의 읽기 또는 업데이트 또는 새 미리 쓰기 로그(WAL) 생성을 위해 대기 중입니다. |
LWLock : CommitTsLock | 프로세스가 제어 파일을 읽거나 업데이트하거나 새 미리 쓰기 로그(WAL) 파일을 만들기 위해 대기 중입니다. |
LWLock : CommitTsSLRU | 프로세스가 동적 공유 메모리 할당 정보를 읽거나 업데이트하기 위해 기다리고 있습니다. |
LWLock : ControlFile | 프로세스가 동적 공유 메모리 상태를 읽거나 업데이트하기 위해 기다리고 있습니다. |
LWLock : ControlFileLock | 백엔드 프로세스가 백엔드 프로세스에 대한 잠금을 추가하거나 검사하기 위해 기다리고 있습니다. |
LWLock : DynamicSharedMemoryControl | 프로세스가 빠른 경로 잠금 정보를 읽거나 업데이트하기 위해 대기 중입니다. |
LWLock : DynamicSharedMemoryControlLock | 프로세스가 논리적 복제 작업자의 상태를 읽거나 업데이트하기 위해 대기 중입니다. |
LWLock : LockManager | 프로세스가 논리적 복제 작업자에 대한 작업이 완료될 때까지 기다리고 있습니다. |
LWLock : LockFastPath | 프로세스가 multixact_member 버퍼에서 I/O를 기다리고 있습니다. |
LWLock : LogicalRepWorker | 프로세스가 멀티액트 오프셋 버퍼에서 I/O를 기다리고 있습니다. |
LWLock : LogicalRepWorkerLock | 프로세스가 공유 멀티액트 상태를 읽거나 업데이트하기 위해 대기 중입니다. |
LWLock : MultiXactMember | 프로세스가 공유 멀티액트 상태를 읽거나 업데이트하기 위해 대기 중입니다. |
LWLock : MultiXactOffset | 프로세스가 멀티액트 멤버를 위해 가장 오래전에 사용된 단순(SLRU) 버퍼에서 I/O를 기다리고 있습니다. |
LWLock : MultiXactGen | 프로세스가 멀티액트 오프셋을 위해 가장 오래전에 사용된 단순(SLRU) 버퍼에서 I/O를 기다리고 있습니다. |
LWLock : MultiXactGenLock | 프로세스가 NOTIFY 메시지에 대해 가장 오래전에 사용된 단순(SLRU) 버퍼에서 I/O를 기다리고 있습니다. |
LWLock : MultiXactMemberBuffer | 프로세스가 NOTIFY 메시지를 읽거나 업데이트하기 위해 대기 중입니다. |
LWLock : MultiXactOffsetBuffer | 프로세스가 새 객체 ID(OID)를 할당하기 위해 대기 중입니다. |
LWLock : NotifyBuffer | 병렬 추가 계획 실행 중에 프로세스가 다음 하위 계획을 선택하기를 기다리고 있습니다. |
LWLock : NotifyQueue | 프로세스가 병렬 해시 계획 실행 중에 작업자를 동기화하기 위해 대기 중입니다. |
LWLock : OidGen | 프로세스가 공유 프로세스별 데이터 구조에 액세스하기 위해 대기 중입니다. |
LWLock : ParallelAppend | 프로세스가 pg_filenode.map 파일의 읽기 또는 업데이트를 기다리고 있습니다. |
LWLock : ParallelHashJoin | 프로세스가 pg_internal.init 파일의 읽기 또는 업데이트를 기다리고 있습니다. |
LWLock : ProcArray | 프로세스가 복제 원본을 생성, 삭제 또는 사용하기 위해 대기 중입니다. |
LWLock : RelationMapping | 프로세스가 복제 슬롯을 할당하거나 해제하기 위해 대기 중입니다. |
LWLock : RelCacheInit | 프로세스가 트랜잭션에 의해 유지되는 술어 잠금 목록에 액세스하기 위해 대기 중입니다. |
LWLock : ReplicationOrigin | 프로세스가 병렬 비트맵 인덱스 스캔 중에 공유 튜플 식별자(TID) 비트맵에 액세스하기 위해 대기 중입니다. |
LWLock : ReplicationSlotAllocation | 프로세스가 병렬 쿼리 중에 공유 튜플 스토어에 액세스하기 위해 대기 중입니다. |
LWLock : SerializablePredicateList | 프로세스가 하위 트랜잭션에 대해 가장 오래전에 사용된 단순(SLRU) 버퍼에서 I/O를 기다리고 있습니다. |
LWLock : SharedTidBitmap | 프로세스가 동기 복제 상태에 대한 정보를 읽거나 업데이트하기 위해 대기 중입니다. |
LWLock : SharedTupleStore | 프로세스가 테이블스페이스를 생성하거나 삭제하기 위해 대기 중입니다. |
LWLock : SubtransBuffer | 프로세스가 트리 비트맵(TBM)에서 공유 이터레이터 잠금을 기다리고 있습니다. |
LWLock : SyncRep | 프로세스가 준비된 트랜잭션 상태를 읽거나 업데이트하기 위해 대기 중입니다. |
LWLock : TablespaceCreate | 프로세스가 미리 쓰기 로그(WAL) 버퍼의 페이지를 대체하기 위해 대기 중입니다. |
LWLock : TbBitmap | 프로세스가 미리 쓰기 로그(WAL)를 메모리 버퍼에 삽입하기 위해 대기 중입니다. |
LWLock : TwoPhaseState | 프로세스가 미리 쓰기 로그(WAL) 버퍼가 디스크에 기록될 때까지 대기 중입니다. |
LWLock : WALBufMapping | 프로세스가 작업 제한 중 기본 백업 중에 대기 중입니다. |
LWLock : WALInsert | 백엔드 프로세스는 pg_sleep 함수를 호출하고 절전 시간 초과가 만료될 때까지 기다리고 있습니다. |
LWLock : WALWrite | 프로세스가 지연 설정으로 인한 복구 중에 미리 쓰기 로그(WAL)를 적용하기 위해 대기 중입니다. |
Timeout : BaseBackupThrottle | 프로세스가 소스(pg_wal, 아카이브 또는 스트림)에서 미리 쓰기 로그(WAL) 데이터를 사용할 수 없어 복구가 진행되는 동안 대기 중입니다. |
Timeout : PgSleep | 프로세스가 비용 기반 베큠 지연 지점에서 대기 중입니다. |
Timeout : RecoveryApplyDelay | 프로세스가 지연 설정으로 인한 복구 중에 미리 쓰기 로그(WAL)를 적용하기 위해 대기 중입니다. |
Timeout : RecoveryRetrieveRetryInterval | 프로세스가 소스(pg_wal, 아카이브 또는 스트림)에서 미리 쓰기 로그 (WAL) 데이터를 사용할 수 없어 복구가 진행되는 동안 대기 중입니다. |
Timeout : VacuumDelay | 프로세스가 비용 기반 베큠 지연 지점에서 대기 중입니다. |
RDS
https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/PostgreSQL.Tuning.concepts.html
Client:ClientRead | 이 이벤트는 RDS for PostgreSQL이 클라이언트에서 데이터를 수신하기 위해 대기 중일 때 발생합니다. |
Client:ClientWrite | 이 이벤트는 RDS for PostgreSQL이 클라이언트에 데이터를 쓰기 위해 대기 중일 때 발생합니다. |
CPU | 이 이벤트는 스레드가 CPU에서 활성 상태이거나 CPU를 대기 중일 때 발생합니다. |
IO:BufFileRead 및 IO:BufFileWrite | 이러한 이벤트는 RDS for PostgreSQL이 임시 파일을 만들 때 발생합니다. |
IO:DataFileRead | 이 이벤트는 공유 메모리에서 페이지를 사용할 수 없기 때문에 연결이 백엔드 프로세스에서 저장소에서 필요한 페이지를 읽도록 대기할 때 발생합니다. |
IO:WALWrite | 이 이벤트는 RDS for PostgreSQL이 미리 쓰기 로그(WAL) 버퍼가 WAL 파일에 쓰여지기를 기다리는 동안 발생합니다. |
Lock:advisory | 이 이벤트는 PostgreSQL 애플리케이션이 잠금을 사용하여 여러 세션에서 활동을 조정할 때 발생합니다. |
Lock:extend | 이 이벤트는 백엔드 프로세스가 릴레이션을 확장하기 위해 릴레이션을 잠그기를 기다리는 동안 다른 프로세스에서 동일한 목적으로 해당 릴레이션에 대한 잠금이 있는 경우에 발생합니다. |
Lock:Relation | 이 이벤트는 쿼리가 현재 다른 트랜잭션에 의해 잠긴 테이블 또는 뷰에 대한 잠금을 얻기 위해 대기 중일 때 발생합니다. |
Lock:transactionid | 이 이벤트는 트랜잭션이 행 수준 잠금을 대기 중일 때 발생합니다. |
Lock:tuple | 이 이벤트는 백엔드 프로세스가 튜플에 대한 잠금 획득을 대기 중일 때 발생합니다. |
LWLock:BufferMapping (LWLock:buffer_mapping) | 이 이벤트는 세션이 데이터 블록을 공유 버퍼 풀의 버퍼와 연결하기 위해 대기 중일 때 발생합니다. |
LWLock:BufferIO(IPC:BufferIO) | 이 이벤트는 RDS for PostgreSQL이 페이지에 동시에 액세스하려고 할 때 다른 프로세스가 입출력(I/O) 작업을 완료할 때까지 기다리는 경우에 발생합니다. |
LWLock:buffer_content (BufferContent) | 이 대기 이벤트는 다른 세션에서 특정 데이터 페이지에 대해 쓰기 잠금을 설정한 동안 세션에서 메모리 내 해당 페이지 읽기 또는 쓰기를 대기 중일 때 발생합니다. |
LWLock:lock_manager (LWLock:lockmanager) | 이 이벤트는 RDS for PostgreSQL 엔진이 빠른 경로 잠금이 불가능할 때 잠금을 할당, 확인 및 할당 해제하기 위해 공유 잠금 메모리 영역을 유지 관리하는 경우에 발생합니다. |
Timeout:PgSleep | 이 이벤트는 서버 프로세스가 pg_sleep 함수 및 절전 시간 초과가 만료될 때까지 대기할 때 발생합니다. |
Timeout:VacuumDelay | 이 이벤트는 예상 비용 한도에 도달하여 진공 프로세스가 휴면 상태임을 나타냅니다. |
참조
'공부 > DATABASE' 카테고리의 다른 글
PostgreSQL 유니크 인덱스 NULL 처리 (0) | 2025.03.29 |
---|---|
PostgreSQL 파티션 테이블 (0) | 2025.03.29 |
postgreSQL Duplicate Key 영향도 (0) | 2025.03.23 |
PostgreSQL 컬럼 변경 영향도 (0) | 2025.03.23 |
PostgreSQL Any 연산자 (0) | 2025.03.23 |