일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 지표
- terraform
- 도커 주의사항
- 신혼 여행
- Til
- ssh
- MAPF
- 경로 계획 알고리즘
- PostgreSQL
- docker
- amazon ecs
- 14일 공부
- github
- study
- DevOps
- AWS
- leetcode
- 오블완
- 구조 패턴
- Playwright
- AWS 비용 절감
- Go-lang
- 논문 정리
- 청첩장 모임
- 생성 패턴
- 실용주의 프로그래머
- 디자인 패턴
- Rust
- 티스토리챌린지
- Monthly Checklist
- Today
- Total
밤 늦게까지 여는 카페
PostgreSQL 기간 별 검색 최적화 본문
데이터베이스를 사용하다보면 기간 별로 데이터를 검색하는 경우가 많이 있습니다.
초기에는 데이터 양이 적어서 검색하는데 시간이 오래 걸리지 않습니만
시간이 흘러서 데이터 양이 많아지면 한번 조회할 때마다 수십초 씩 오래 걸리게 됩니다.
이번에는 기간 별 검색을 최적화 하는 방법에 대해서 공부해보겠습니다.
공부할 내용은 1) 인덱스, 2) 파티셔닝입니다.
1. 인덱스
데이터베이스는 데이터 조회를 최적화 하기 위해서 특정 필드들을 이용해서 데이터들을 정렬시켜 놓습니다.
이것이 인덱싱인데요. 인덱스로 설정된 필드를 이용해서 데이터를 조회할 때는 비교적 빠르게 조회할 수 있습니다.
그래서 날짜 컬럼에 인덱스를 생성하면 조회 속도를 향상시킬 수 있는 것입니다.
다음 명령어를 이용해서 인덱스를 생성할 수 있습니다.
CREATE INDEX ON {TABLE_NAME} {COLUMN_NAME}
※ 그렇다고 인덱스를 모든 필드에 생성해버리면 오히려 조회 속도가 느려질 수 있으니 주의해서 사용하셔야 됩니다!
2. 파티셔닝
1번의 방법으로 인덱스를 생성했다고 문제가 해결되는 것은 아닙니다.
데이터 양이 많아지면 조회 속도가 느려지는 것은 인덱스를 사용하더라도 막을 수 없는 것이죠.
그러면 데이터 양을 제한하는 것도 조회 속도를 올릴 수 있는 방법이겠죠?
유저가 서비스를 사용하면 자동으로 데이터가 저장되는데 데이터 양을 어떻게 제한할 수 있을까요?
파티션 테이블을 이용하여 제한할 수 있습니다.
테이블을 만들 때 다음과 같이 뒤에 PARTIOTION BY RANGE(date)를 붙여주면 됩니다.
CREATE TABLE data (
id UUID PRIMARY KEY,
date DATE NOT NULL,
message TEXT
) PARTITION BY RANGE(date);
그리고 데이터를 나눠서 저장할 파티션을 다음과 같이 생성하면 됩니다.
CREATE TABLE data_2022_01 PARTITION OF data
FOR VALUES FROM ('2022-01-01') TO ('2022-01-31');
CREATE TABLE data_2022_02 PARTITION OF data
FOR VALUES FROM ('2022-02-01') TO ('2022-02-28');
CREATE TABLE data_2022_03 PARTITION OF data
FOR VALUES FROM ('2022-03-01') TO ('2022-03-31');
'데이터베이스 > PostgresQL' 카테고리의 다른 글
PostgreSQL autoincrement - Oracle DB는 SERIAL이 없어요? (0) | 2022.10.15 |
---|---|
PostgreSQL 에러 "too many connections ~" 대응 방법 (0) | 2022.10.14 |
PostgreSQL EXPLAIN을 이용한 쿼리 성능 분석 - 언제까지 쿼리 하나하나 시간 측정하면서 튜닝할 거에요! (0) | 2022.10.09 |
PostgreSQL 계정 비밀번호 바꾸기 (0) | 2022.10.09 |
PostgreSQL에서 DUAL 테이블 사용하기 (0) | 2022.09.22 |