Today
Total
KoreanEnglishFrenchGermanJapaneseSpanishChinese (Simplified)
관리 메뉴

DB & AWS Knowledge

PostgreSQL / PPAS DDL 수행 시 발생하는 lock 의 유의성 본문

PostgreSQL/기타 지식

PostgreSQL / PPAS DDL 수행 시 발생하는 lock 의 유의성

`O` 2023. 7. 8. 18:35
728x90
반응형

이 페이지에서는 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 확실하게 확보한 상태에서 이를 수행 하길 권장 한다.

반응형
Comments