[PostgreSQL] SQL Error Handling
·
개발 (Development)/PostgreSQL
.sql 파일을 실행할 때 실행 방식에 따라 에러 발생 시 다음 문장의 실행 여부가 달라집니다.1. 일반적인 SQL 실행 방식대부분의 SQL 실행 도구(MySQL, PostgreSQL, Oracle 등)에서는 각각의 SQL 문장이 독립적으로 실행됩니다. 따라서 한 문장에서 에러가 발생해도 다음 문장이 실행될 수 있습니다.예를 들어, PostgreSQL에서 psql을 사용하여 script.sql을 실행하면:psql -d mydb -f script.sql이 경우, 한 문장에서 에러가 발생해도 다음 문장은 그대로 실행됩니다.2. 트랜잭션(TRANSACTION) 내에서 실행할 경우BEGIN ... COMMIT / ROLLBACK 블록 안에서 실행하면, 에러 발생 시 전체 트랜잭션이 롤백될 수 있습니다. 트랜잭션..
[PostgreSQL] JSON 컬럼에서 Key-Value 추출 및 MyBatis 연동
·
개발 (Development)/PostgreSQL
PostgreSQL에서는 json 또는 jsonb 타입을 사용하여 JSON 데이터를 저장할 수 있습니다. 하지만 이를 테이블 형태로 변환하여 조회할 때는 추가적인 함수가 필요합니다. 특히 MyBatis를 활용하여 Java에서 HashMap 형태로 데이터를 가져오려면 적절한 쿼리 작성이 중요합니다. 이번 글에서는 PostgreSQL에서 JSON 데이터를 key-value 형태로 변환하는 방법과 MyBatis를 이용해 이를 Java에서 활용하는 방법을 알아보겠습니다.1. PostgreSQL에서 JSON 데이터를 Key-Value 형태로 변환하기1.1 테이블 및 샘플 데이터 생성먼저 JSON 데이터를 저장하는 status 컬럼을 포함한 테이블을 생성하고, 샘플 데이터를 삽입합니다.CREATE TABLE tes..
[PostgreSQL/TimescaleDB] Hypertable과 Chunk를 포함한 최소 크기 덤프 방법
·
개발 (Development)/PostgreSQL
PostgreSQL에서 Hypertable과 Chunk를 포함한 최소 크기 덤프 방법PostgreSQL에서 TimescaleDB의 Hypertable과 Chunk를 모두 포함하면서 덤프 파일 크기를 최소화하는 방법을 소개합니다. 효율적인 덤프를 위해 압축, 불필요한 데이터 제외, 사전 데이터 최적화 등의 전략을 사용합니다.1. 압축을 최대화한 pg_dump 사용TimescaleDB의 Hypertable과 Chunk를 포함하면서 덤프 크기를 최소화하려면 pg_dump의 압축 기능을 적극 활용해야 합니다.pg_dump -U -h -p -d \ --format=custom \ --compress=9 \ --file=backup.dump--format=custom : 가장 효율적인 압축이 가능한 C..
[PostgreSQL] 데이터베이스 용량 조회 방법
·
개발 (Development)/PostgreSQL
PostgreSQL에서 데이터베이스의 용량을 조회하는 방법은 다양합니다. 이 글에서는 데이터베이스, 테이블, 인덱스 등의 용량을 확인하는 다양한 SQL 쿼리를 소개합니다.1. 전체 데이터베이스 용량 조회현재 접속 중인 데이터베이스의 전체 크기를 조회하려면 아래의 쿼리를 사용합니다.SELECT pg_size_pretty(pg_database_size(current_database()));pg_database_size 함수는 바이트 단위로 크기를 반환하며, pg_size_pretty를 사용하면 사람이 읽기 좋은 형식(예: MB, GB)으로 출력됩니다.2. 특정 데이터베이스 용량 조회다른 데이터베이스의 크기를 확인하고 싶다면 데이터베이스 이름을 인자로 전달합니다.SELECT pg_size_pretty(pg_d..
[PostgreSQL] WAL(Write-Ahead Logging) 로그 관리 가이드
·
개발 (Development)/PostgreSQL
PostgreSQL WAL(Write-Ahead Logging) 로그 관리 가이드PostgreSQL의 WAL(Write-Ahead Logging) 로그가 가득 차지 않도록 유지하려면 몇 가지 설정을 조정해야 합니다. 특히, 자동 체크포인트 설정, WAL 보존 주기 설정, 아카이빙 정책 등을 관리하면 WAL 크기를 제어할 수 있습니다. 해당 기능을 찾아보게 된 이유는 업무 중 AWS에 서비스 배포 및 이관 시 WAL 로그가 저장되는 PV(Persistent Volume) 의 크기에 제약이 있어, 해당 Pod 가 중지되는 현상이 발생했습니다. 따라서 해결 방법을 찾아 기록하기 위해 이 글을 남깁니다.1. WAL 로그 크기 관리 기본 설정WAL 파일이 너무 많이 쌓이지 않도록 하려면, 다음 설정들을 postg..