엔터프라이즈DB, ‘포스트그레SQL 14’ 지원

컴퓨팅입력 :2021/10/12 11:03

오픈소스 포스트그레SQL 지원기업인 엔터프라이즈DB는 새롭게 발표된 '포스트그레SQL 14'의 보안 강화와 관리 편의성 향상, 성능, 확장성, 표준화 등을 지원한다고 12일 밝혔다.

포스트그레SQL은 기술 리뷰 사이트인 ‘DB 엔진’에서 ‘2020년 올해의 DBMS’로 선정됐으며, 몽고DB, 레디스, 마이SQL 등을 앞지르고 있다. ‘2021 스택 오버플로우 개발자 설문조사’에 의하면, 전문 개발자의 44%가 가장 인기 있는 기술로 포스트그레SQL을 꼽았으며, 77%는 가장 사랑받는 기술로 꼽았다. 개발자들은 가장 원하는 데이터베이스로 ‘포스트그레SQL’를 선택했다. 클라우드 네이티브 컴퓨팅 재단(CNCF)은 기술 레이더에서 최고의 데이터베이스로 ‘포스트SQL’을 선정했다.

포스트그레SQL 14는 하이엔드 워크로드를 위한 새로운 차원의 성능을 구현한다. 파티션 쓰기를 더 빠르게 처리하고, 인덱스 증가를 보다 효과적으로 처리하며, 더 적은 비용으로 대기상태의 연결을 처리한다. 시계열, 그래프 쿼리 및 도큐먼트 데이터 관리 기능이 향상됐으며, 더 큰 규모의 데이터베이스 및 분석 시스템을 관리할 수 있도록 다양한 기능이 향상됐다.

엔터프라이즈DB 로고

포스트그레SQL 신규 사용자가 중요한 보안 기능을 최대한 활용할 수 있도록 ‘password_encryption’ 매개변수의 기본 설정은 SCRAM-SHA-256 이며, MD5는 사용을 권장하지 않는다. pgbouncer와 포스트그레SQL에서 암호가 훨씬 더 길어질 수 있기 때문에 사용자는 SCRAM-SHA-256이 제공하는 보안 이점을 최대한 활용할 수 있다. 또한, SSL 인증서의 DN을 클라이언트 인증서와 일치시키고, SSL 연결 패킷에 SNI를 추가했다.

배큠(VACUUM)은 제거 가능한 인덱스 항목 수가 많지 않은 경우, 인덱스 배큐밍을 건너뛸 수 있다. 배큠 매개변수 INDEX_CLEANUP에 이러한 최적화를 지원하는 ‘auto’라는 새로운 기본값이 있다. 이제 최소-잠금 인덱스 작업 혹은 테이블이 xid 또는 multixact wraparound 임계값에 근접하는 경우, 데드 로우를 제거하는데 배큠 기능을 보다 적극적으로 사용할 수 있다. 이는 vacuum_failsafe_age 및 vacuum_multixact_failsafe_age 매개변수에 의해 제어가 가능하다.  대기 서버에서 복제(replay)를 막는 매개변수 변경으로 인해 서버 셧다운이 발생하는 대신, 복제(replay)가 중지됨으로써 서버 가용성이 더욱 향상됐다. 다양한 추가 모니터링 기능을 통해 서버가 수행하는 작업과 현재 서버의 정확한 상태를 파악할 수 있다.

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

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

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

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

페이지 가시성 비트를 업데이트함으로써 더 효과적인 실행이 가능한 FREEZE 옵션과 복사(COPY) 명령이 향상됨으로써 데이터 로드 성능도 크게 개선되었다. 바이너리모드 복사도 빨라졌다.

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

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

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

SQL언어를 사용하는 서버 측 함수 및 프로시저는 이제 SQL 표준 호환 함수 본문을 사용할 수 있다. SQL 스탠다드 구문으로 함수나 프로시저를 작성할 때 본문은 즉시 파싱(parsed)돼 파스 트리로 저장된다. 이를 통해 함수 종속성을 보다 효과적으로 추적할 수 있으며, 보안 이점도 누릴 수 있다.

검색(SEARCH) 및 사이클(CYCLE) 클로즈에 의해 그래프-쿼리 지원 기능이 향상됐으며, 이를 통해 포스트그레SQL에서 복잡한 그래프 쿼리를 보다 용이하게 작성할 수 있다. 이러한 기능도 SQL 표준에 포함돼 있다. SQL 표준의 최근 개발 사항도 추후 반영될 예정이다.

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

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

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

관련기사

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

EDB는 복제 복구 제어  및 포스트그레SQL 데이터베이스의 손상을 확인하기 위한 pg_amcheck와 같은 진단 기능을 포함하여 다양한 기능 향상에 참여했다.