보안 강화, 관리 편의성, 성능, 표준화 등 사용자 경험 향상 기대

[아이티데일리] 엔터프라이즈DB(한국지사장 이강일)는 ‘포스트그레SQL 14(PostgreSQL 14)’에 대한 보안 강화, 관리 편의성 향상 등 새로운 지원 사항을 12일 공개했다.

새로운 ‘포스트그레SQL 14’는 하이엔드 워크로드를 위해 향상된 성능을 제공한다. 파티션 쓰기(partition writes)와 인덱스 증가(index growth)를 보다 빠르고 효과적으로 처리하며, 더 적은 비용으로 대기상태의 연결(idle connections)이 가능하다. 또한 시계열, 그래프 쿼리 및 도큐먼트 데이터 관리 기능이 향상되었으며, 더 큰 규모의 DB 및 분석 시스템을 관리하기 위한 기능들이 강화됐다.

엔터프라이즈DB는 ‘포스트그레SQL 14’의 기능 향상을 위해 보안 강화와 관리 편의성 향상, 성능, 확장성, 표준화 등의 지원 내역을 발표했다. 주요 내용은 다음과 같다.


■ 보안
password_encryption 파라메터의 기본 설정은 SCRAM-SHA-256로 제공되고 MD5는 권장하지 않는다. ‘pgbouncer’와 ‘포스트그레SQL’에서 암호가 더 길어질 수 있어 SCRAM-SHA-256이 제공하는 보안 이점을 최대한 활용할 수 있다. 또한 SSL 인증서의 DN(Distinguished Name)을 클라이언트 인증서(Client Certificate Authentication)와 일치시키고, SSL 연결 패킷에 SNI(Server Name Indication)를 추가했다.


■ 관리 편의성
vacuum은 제거 가능한 인덱스 항목 수가 많지 않은 경우 인덱스 베큐밍(vacuuming)을 건너뛸 수 있다. vacuum 매개변수 INDEX_CLEANUP에는 이러한 최적화를 지원하는 ‘auto’라는 새로운 기본값이 제공된다. 이제 최소-잠금(minimal-locking) 인덱스 작업 혹은 테이블이 xid 또는 multixact wraparound 임계값에 근접하는 경우, 데드 로우(dead rows)를 제거하는데 vacuum 기능을 보다 적극적으로 사용할 수 있다. 이는 vacuum_failsafe_age 및 vacuum_multixact_failsafe_age 매개변수에 의해 제어가 가능하다.

또한 대기 서버에서 복제(replay)를 막는 매개변수 변경으로 인해 서버 셧다운(shutdown)이 발생하는 대신, 복제(replay)가 중지됨으로써 서버 가용성이 향상됐다. 다양한 추가 모니터링 기능을 활용하면 서버가 수행하는 작업과 현재 서버의 정확한 상태를 파악할 수 있다.


■ 확장성 및 성능
‘포스트그레SQL 14’는 파티션 수가 많은 테이블에서의 업데이트 및 삭제 기능이 향상됐다. 이는 옵티마이저의 부하를 크게 줄일 수 있고, 파티션 테이블의 업데이트/삭제 작업에도 파티션 프루닝(partition pruning)이 가능하다. 가장 중요한 것은 이전보다 훨씬 더 많은 숫자의 파티션 확장을 통해 기존보다 더 큰 데이터베이스를 처리할 수 있다는 점이다.

또한 파티션을 온라인으로 분리(detach)할 수 있어 대규모 시계열 데이터 테이블을 보다 용이하게 관리할 수 있다. 새로운 date_bin()을 통해 사용자들은 시계열 데이터를 날짜 범위로 더 쉽게 그룹화 할 수 있으며, 일반적으로 사용되는 윈도우 펑션을 보다 유연한 데이터 유형으로 손쉽게 사용할 수 있다.

대규모 JSON 및 XML 도큐먼트가 있는 애플리케이션에는 TOASTed 데이터에 대한 새로운 압축 옵션인 LZ4가 제공된다. 이 새로운 방법은 최신 압축 기술을 통해 도큐먼트 데이터의 압축 및 압축 해제 속도를 크게 향상시킨다.


■ 애플리케이션 성능 튜닝 및 인덱스
‘포스트그레SQL 14’는 인덱스 관리를 통한 애플리케이션 튜닝 기능이 크게 향상됐다. 특히 CREATE INDEX CONCURRENTLY 및 REINDEX CONCURRENTLY는 동시에 여러 명령을 실행할 때 서로 영향을 주지 않으며, 다른 릴레이션(relations)의 데드 로우(dead row) 제거를 제한하지도 않는다.

페이지 가시성 비트(page visibility bits)를 업데이트함으로써 더 효과적인 실행이 가능한 FREEZE 옵션과 COPY 명령이 향상됨으로써 데이터 로드 성능도 개선됐다. Binary-mode COPY도 한층 빨라졌다.

BRIN 인덱스도 몇몇 기능이 향상됐다. 범위 당 여러 개의 최소/최대값을 기록할 수 있어 더욱 유연한 사용이 가능하며, 이는 각 페이지 범위에 값 그룹(groups of values)이 있을 때 유용하다. BRIN 인덱스는 이제 블룸 필터(bloom filters)를 사용할 수 있다. 이를 통해 BRIN 인덱스는 힙(heap)에서 로컬라이제이션이 되지 않거나 업데이트로 인해 영향을 받는 데이터와 함께 효과적으로 사용될 수 있다.

이외에도 머티리얼라이즈드 뷰(materialized view), 성능 향상을 위해 병렬 쿼리를 사용할 수 있다.


■ 확장된 통계를 사용한 복잡한 쿼리 프로세싱 향상
그동안 ‘포스트그레SQL’은 힌트를 이용한 쿼리 성능 제어를 제공하지 않았다. 옵티마이저 문제를 해결하기 위한 최선의 장기적 접근방식은 데이터 자체에 초점을 둔 선언적(declarative) 방식이다. EDB 기여자들은 CREATE STATISTICS 명령어를 처음 개척했으며, 이 선언적(declarative) 접근방식을 지속적으로 향상시키고 있다.

‘포스트그레SQL 14’에서는 확장된 통계를 OR 클로즈 추정(clause estimation) 및 표현식(expression)에 사용할 수 있는 위치(places)의 수가 늘어났다. 이를 통해 이전과 같은 열(columns)뿐만 아니라, 표현식(expressions) 및 열(columns) 그룹에 대한 통계가 가능하다. 시스템 뷰 pg_stats_ext_exprs는 이러한 통계 결과를 제공한다.


■ 표준화
이전에는 LANGUAGE SQL을 사용하는 서버 측 함수(functions) 및 프로시저(procedures)는 문자열 리터럴(string-literal) 함수 본문만 지원 했는데, 이제 SQL 스탠다드 호환 함수 본문을 사용할 수 있다. SQL 스탠다드 구문으로 함수나 프로시저를 작성할 때 본문은 즉시 파싱(parsed) 되어 파스 트리(parse tree)로 저장된다. 이를 통해 함수 종속성(function dependencies)을 추적하고 보안 이점도 누릴 수 있다.

SEARCH 및 CYCLE 클로즈에 의해 그래프-쿼리 지원 기능이 향상되었으며, 이를 통해 ‘포스트그레SQL’에서 복잡한 그래프 쿼리를 보다 용이하게 작성할 수 있다. 이러한 기능 역시 SQL 스탠다드에 포함돼 있다.

구독자(Subscribers) 또는 API를 통해 진행 시간이 긴 트랜잭션을 스트리밍할 수 있도록 논리 복제(Logical Replication) 기능이 향상됐다. 이전에는 트랜잭션이 모두 완료될 때까지 logical_decoding_work_mem보다 큰 트랜잭션은 디스크에 기록되었으며, 이는 상당한 영향을 미칠 수 있었다.

논리 복제는 많은 수의 DDL 스테이트먼트(DDL statements)를 보다 손쉽게 처리할 수 있다. 캐시 무효화(Cache Invalidation) 메시지는 논리 복제를 사용할 때 각 명령 후에 WAL에 작성되기 때문에 진행 중인 트랜잭션을 스트리밍해 처리할 수 있다.


■ 샤딩(Sharding)
여러 외부 테이블을 참조하는 쿼리는 외부 테이블 스캔을 병렬로 수행할 수 있다. 이에 async_capable이 설정된 경우, 이러한 방식의 스캔에 대한 postgres_fdw 지원 성능이 크게 향상됐다. 이는 미래의 멀티-노드 분석을 위한 지원 기능이다. 또한 연결 캐싱(Connection Caching)을 사용하면 트랜잭션 전반에서 연결 상태를 계속 오픈 상태로 열어둠으로써 성능을 더욱 향상시킬 수 있다.

또한, Libpq pipeline 모드를 사용하면 각 명령에서 네트워크 컨펌을 기다리지 않고 변경 사항에 대한 스트림을 전송할 수 있어 분산 DB의 성능을 크게 향상시킬 수 있다.

저작권자 © 아이티데일리 무단전재 및 재배포 금지