본문 바로가기

PostgreSQL

(16)
PostgreSQL 시퀀스 정리 개요: PostgreSQL의 시퀀스 사용방법 및 권장안을 정리한 글입니다. Oracle과의 차이점 및 cache 동작 방식을 이해하여 보다 적절한 cache 값 설정, 개발하는 데에 필요한 현재 last_value 확인 방법 등을 서술합니다. 관련된 함수 정리 예시 -- 현재 값 확인, 다만 해당 시퀀스가 해당 세션에서 사용되었어야지만 확인 가능 -- 사용 권한 없는 경우 하단의 방식으로 확인 가능. currval('delivery_tip_id_seq'); -- 해당 sequence의 insert 권한 필요 nextval('delivery_tip_id_seq'); setval('delivery_tip_id_seq',1000); setval('delivery_tip_id_seq',1000,true); **..
PostgreSQL의 통계 제공 view들 14~16 버전에서 추가된 view들에 대한 추가 필요 목록 데이터베이스 레벨에서 테이블 레벨, 인덱스 레벨 등으로 정보를 좁혀가며 확인하는 것이 좋습니다. 복제 관련 테이블(pg_stat_replication)을 모니터링하며 빠르게 복제 관련 이슈를 대응할 수 있습니다. 인덱스 생성이나 vacuum 등의 진행상황을 확인할 수 있는 view들이 추가되었으며 진행상황을 확인할 수 있습니다. 버전 별로 각 뷰들이 제공하는 정보들이 차이가 있을 수 있습니다. pg_stat_reset () 함수 호출로 현재 접속한 데이터베이스에 대한 통계를 초기화 할 수 있습니다. 수퍼유저 권한 필요 **해당 함수 호출 이후에는 해당 데이터베이스 레벨 analyze를 권장합니다.** 뷰 이름설명지원 버전 pg_stat_all_..
PostgreSQL 병렬 처리 병렬 처리는 사용되는 대부분의 경우 수행시간을 단축시킨다. 다만 현재 PostgreSQL 최신 버전 기준으로는 병렬처리가 되는 경우가 몇몇 구문에 제약되고 그 제약된 중에서도 병렬 처리가 되지 않는 케이스들이 있다. 이에 대해 정리한다. 현재 16버전 기준으로 Parallel이 동작하는 구들은 다음과 같다(index 생성, vacuum 등의 관리 명령어들 제외) CREATE TABLE ... AS SELECT INTO CREATE MATERIALIZED VIEW REFRESH MATERIALIZED VIEW 관련하여서도 파라미터들이 있는데 그 값들을 잘못 설정하는 경우 병렬 쿼리 플랜이 생성되지 않는다. 아래의 설정들은 병렬 처리가 수행되기 위해 필요하다 max_parallel_workers_per_ga..
Aurora PostgreSQL orphaned file 발생 관련 정리 메이저 버전 업그레이드를 운영 환경에서 진행한 이후 급작스럽게 volume usage가 늘어나는 현상이 발생하였다. DB 레벨에서의 사이즈는 volume usage와 비슷하였지만 테이블+인덱스 사이즈들의 총합이 특정 db에서만 큰 차이가 확인되어(약 900기가~1테라) temp 사용 부분을 확인해보아도 용량이 맞지가 않던 부분들이 확인되었었다. 해당 작업 관련하여 clone db 생성하여 동일한 업그레이드 테스트 진행시에 발생하지 않았던 부분이었기에 원인 분석을 aws 측에 요청하였다. 다행히 auto provision이 되는 aurora 특성상 장애 포인트로 이어지지는 않지만, RDS PostgreSQL 사용중이었다면 대응을 해야 할 정도로 빠른 증가폭을 보였다.(증가 시점 시간당 200기가씩 증가하였..
PostgreSQL에서의 ALTER TABLE 구문 정리 업무 진행 중 공유가 필요하다 보니 정리하게 된 내용을 블로그에 포스팅. PostgreSQL 버전별 ALTER TABLE 구문 수행시 Table re-write 발생하는 경우 정리 ** 정리 ** ALTER TABLE ADD COLUMN... ; + ALTER TABLE ALTER COLUMN DEFAULT ... ; 해당 구문 수행의 경우 기존 데이터는 두고 새롭게 생성되는 데이터에만 DEFAULT 적용 ALTER TABLE ADD COLUMN ... DEFAULT ... ; 해당 구문 수행시에는 기존 존재하던 null 데이터들도 DEFAULT 데이터 적용 ALTER TABLE ADD COLUMN ... DEFAULT 관련 11 버전에서는 기존 데이터 DEFAULT 값 설정 시에 table rewrit..
PostgreSQL 14 암호 hash(scram-sha-256) 관련 2022년 7월 AWS에서 Aurora PostgreSQL 14 버전을 릴리즈 하였다. 커뮤니티 버전이나 RDS는 꽤 오래 전에 릴리즈 되었는데, 이번에 redshift 관련하여 이슈가 발견되었다. PostgreSQL은 오래 전부터 사용자 암호를 md5 방식으로 해시 처리를 하였는데, 이 방식은 최근 몇년 동안 취약점이 발견되어 권장하지 않는 방식이 되었고, PostgreSQL 10버전에서부터는 scram-sha-256 방식을 지원하여 왔다. PostgreSQL 14버전으로 기존 aurora 클러스터를 업그레이드 시키고 별 문제없이 잘 쓰고 있었는데 구성이 변경되며 amazon redshift가 추가되면서 이슈가 발견되었다. 이슈는 redshift에서 external table 기능을 사용하려고 Auro..
RDS Aurora(PG)와 RDS PostgreSQL에 대한 생각 일전에 유투브에서 본 내용 중 이런 글을 소개하는 글을 본 적이 있다. Is Aurora PostgreSQL really faster and cheaper than RDS PostgreSQL - Benchmarking - MigOps Is Aurora PostgreSQL really faster and cheaper than RDS PostgreSQL - Benchmarking - MigOpsAurora PostgreSQL is claimed as 3 times faster than RDS PostgreSQL. Aurora PostgreSQL vs RDS PostgreSQL benchmark proves differentlywww.migops.com 이 글의 내용은 결국 AWS가 자랑하는 Auroa가 정..
Atomic function in PostgreSQL 14 PostgreSQL 가 의존성(dependency tracking) 추적을 제공함에도 불구하고 PostgreSQL 14 버전 이전에서는 function body에서의 의존성을 추적하지는 않았다. 즉, function body에서 정의된 부분에서는 다른 drop이 가능한 오브젝트를 참조하여도, 기존 오브젝트가 drop이 되는 것을 PostgreSQL에서 막지 않아 추후에 기존 오브젝트를 참조하는 function을 실행하려고 할 때 이미 drop된 오브젝트를 참조하여 오류가 발생하는 경우가 발생할 수 있다는 이야기다. PostgreSQL 14 이전 버전에서는 PL/pgsql에서 BODY 파트는 일반 텍스트로 취급되었지만, PostgreSQL 14버전부터는 BEGIN ATOMIC이라고 명시함으로써 BODY 파..