PostgreSQL 4

PostgreSQL에서 불필요한 인덱스를 찾는 방법

1. 사용되지 않는 인덱스 찾기아래 쿼리는 PostgreSQL의 pg_stat_user_indexes 뷰를 사용하여 최근 사용되지 않은 인덱스를 찾습니다.SELECT schemaname || '.' || relname AS table_name, indexrelname AS index_name, idx_scan AS index_scans, pg_size_pretty(pg_relation_size(indexrelid)) AS index_sizeFROM pg_stat_user_indexesJOIN pg_index USING (indexrelid)WHERE idx_scan = 0ORDER BY pg_relation_size(indexrelid) DESC;📌 설명:idx_scan = 0 ..

데이터베이스 2025.03.16

PostgreSQL 주의할점

1. 성능 및 튜닝 관련 주의사항✅ 1-1. 적절한 인덱스 사용인덱스를 잘못 사용하면 성능 저하가 발생할 수 있습니다.B-TREE 인덱스는 기본이지만, 경우에 따라 GIN, GiST, BRIN, Hash 인덱스가 더 적합할 수도 있습니다.주의할 점인덱스가 너무 많으면 오히려 성능이 저하됨 (INSERT/UPDATE 성능 저하).LOW CARDINALITY(고유 값이 적은 컬럼)에는 인덱스 효과가 낮음.EXPLAIN ANALYZE를 사용하여 인덱스가 실제로 활용되는지 확인.🔹 문제 예시 (불필요한 인덱스 추가)CREATE INDEX idx_name ON users (name);🔹 해결 방법 (올바른 인덱스 전략)CREATE INDEX idx_name ON users USING GIN (to_tsvect..

데이터베이스 2025.03.14

PostgreSQL에서 VARCHAR(n)을 작게 설정해도 큰 저장 공간을 차지하는가?

PostgreSQL에서 VARCHAR(n)을 작게 설정해도 큰 저장 공간을 차지하는가?📌 결론부터 말하면, VARCHAR(n)을 작게 설정해도 큰 저장 공간을 차지하는 것은 사실이 아닙니다.PostgreSQL은 문자열 크기만큼만 저장하며, 불필요한 추가 공간을 차지하지 않습니다.1. PostgreSQL의 문자열 저장 방식PostgreSQL에서 문자열(VARCHAR(n), TEXT)은 가변 길이 저장 방식을 사용합니다.즉, 저장할 문자열의 실제 길이만큼만 저장되며, 불필요한 패딩(고정 크기 할당)이 발생하지 않습니다.✅ VARCHAR(n)과 TEXT는 저장 방식이 동일PostgreSQL에서 VARCHAR(n)과 TEXT는 동일한 방식으로 저장됩니다.타입특징TEXT길이 제한 없이 저장 가능VARCHAR(n..

데이터베이스 2025.03.13

PostgreSQL 데이터 타입 정리

PostgreSQL의 기본 데이터 타입은 크게 숫자, 문자, 날짜/시간, 논리형, 배열, JSON, 범위 타입 등으로 나눌 수 있습니다. 1. 숫자 타입 (Numeric Types)정수형 (Integer Types)타입크기범위smallint2바이트-32,768 ~ 32,767integer 또는 int4바이트-2,147,483,648 ~ 2,147,483,647bigint8바이트-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807실수형 (Floating-Point Types)타입크기설명real 또는 float44바이트단정도 부동소수점 (소수점 이하 약 6자리)double precision 또는 float88바이트배정도 부동소수점 (소수점 이하 약 15자리)고정소..

데이터베이스 2025.03.13