DB & AWS Knowledge
PostgreSQL / PPAS DDL 수행 시 발생하는 lock 의 유의성 본문
이 페이지에서는 PostgreSQL / PPAS 서버 혹은 인스턴스 에서 DDL 을 수행 시 발생하는 lock 의 유의성에 대하여 다룬다.
이 페이지는 아래의 공식 문서, 이전 게시글, 기타 외부 링크와 연관되어 있다.
[1] https://www.postgresql.org/docs/current/explicit-locking.html
[2] 2021.03.08 - [PostgreSQL/아키텍처 및 내부 구조] - PostgreSQL / PPAS Lock 종류
[3] 외부링크
[4] https://dev.mysql.com/doc/refman/8.0/en/innodb-online-ddl-operations.html
PostgreSQL / PPAS 에서 DDL 수행 시 발생하는 Lock 종류
참고 링크 [1], [2] 를 확인하면 DDL 이 발생 할 시 발생하는 Lock 은 주로 Table 단위의 exclusive lock 종류들임을 알 수 있다. 해당 lock 의 자세한 정보는 위의 링크들을 참조하면 된다.
- SHARE UPDATE EXCLUSIVE (ShareUpdateExclusiveLock)
- SHARE (ShareLock)
- SHARE ROW EXCLUSIVE (ShareRowExclusiveLock)
- EXCLUSIVE (ExclusiveLock)
- ACCESS EXCLUSIVE (AccessExclusiveLock)
PostgreSQL / PPAS 에서 DDL 을 통한 변경작업 수행 시 유의사항
위의 lock 종류를 살펴보면 해당 내용들은 table 단위로 발생하는 것을 확인 할 수 있는데 이게 다른 오픈소스 DB 인 MySQL / MariaDB 와 큰 차이를 보인다. MySQL / MariaDB 에서는 인덱스 추가등의 DDL 을 수행 시, [4] 의 내용과 같이 가능한 online 성으로 다른 세션들의 데이터 조회, 변경을 보장하려고 하나 PostgreSQL / PPAS 는 그렇지가 않다.
[3] 에서 간략한 테스트를 통해 이를 확인 할 수 있으며 이를 확인하면 DDL 로 인하여 여러 SELECT, DML 구문들이 대기상태에 빠져 서비스 장애를 유발 할 수도 있다는 것을 추측 할 수 있다.
그렇기 때문에 PostgreSQL / PPAS 로 구성된 운영 서버 (클라우드를 사용 시 인스턴스) 에서 DDL 을 통한 변경 작업을 수행한다면 가능한 서비스 이용시간이 적은 시간 대 혹은 서비스내 점검 공지 등을 통해 downtime 을 확실하게 확보한 상태에서 이를 수행 하길 권장 한다.
'PostgreSQL > 기타 지식' 카테고리의 다른 글
pgAdmin 등의 PostgreSQL Client 프로그램에서 Meta-Commands 명령어 대응 쿼리 수행 (0) | 2023.08.17 |
---|---|
pg_hba.conf 파일 구성 (0) | 2021.06.14 |
상이 버전간 Replication 설정 (0) | 2021.03.08 |
PostgreSQL / PPAS 테이블 rename 시 동일 인덱스 적용 가능 유무 (0) | 2021.03.08 |
PostgreSQL / PPAS 운영 중 테이블 파일 손실 혹은 유실 시 (0) | 2021.03.08 |