본문 바로가기

전체 글

(203)
Geoff Merrill, Shiraz 2008 한국에 온 지도 벌써 6년이 지났다. 처음 한국에 왔을 때의 복잡한 심정과 지금을 생각하면 참 뭔가 바쁘게 달려왔는데 아직도 갈 길이 멀었구나 하는 생각이 든다. 그게 게으른 나를 계속 노력하게 하는 유일한 원동력 같기도 하다. 6년 전과 비교하면.. 조금 더 삶이 편안해진 것을 느끼고 조금은 더 성장했다고 느끼며, 호주에서 살던 때에도 그랬지만 여전히 주위에 좋은 사람들이 많이 있고 또 새로운 소중한 인연들이 생겼다. 호주에서 즐겨 마시던 맥라렌베일의 한 와인 사진이 나를 과거로 잠시 초대했다. 이 와인을 마실 때 즐거웠던 기억들은 아직도 가슴 한켠을 아련하게 만들지만, 와인을 제대로 처음 시작하게 된 계기가 이 와인이 아니었던가 할 정도로 즐겁게 마셨던 기억이 있다. 호주에서의 인연들도 이제 모두 희..
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..
시놀로지 보안 관련 인증서 설정 인증서 갱신 관련 오류가 발생했던 부분으로 고생을 하여 내용 간단하게 정리 let's encrypt 인증서를 사용하는 경우, 리버스 프록시 등을 설정하는 경우에는 단순하게 사용하는 도메인을 입력하는 것만으로는 정상적으로 동작하지 않는다. 이럴 때에는 앞에 prefix를 포함한 도메인을 주제 대체 이름 항목에 넣어주어야 한다. 제어판 - 보안 - 인증서 갱신(혹은 생성) let's encrypt 인증서 얻기를 선택한 뒤 아래의 입력 창에서 꼭 주제 대체 이름을 넣어주어야 정상적으로 앱들에서 인증서를 인식한다.(예: xx.synology.me 사용하는 경우 도메인 이름에 입력해주고 주제 대체 이름 항목에 dsm.xx.synology.me 같은 주소 입력 필요)
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..