DB/Postgresql

파티션 및 analyze

개발 일기92 2024. 4. 8. 15:48

partition이란?

파티셔닝이란 논리적으로 존재하는 거대한 테이블을 쪼개서
물리적으로 작은 테이블 조각들로 만드는 것

 

partition 장점?

1. 인덱스의 크기

거대한 테이블에 특정 컬럼에 인덱스를 생성하는 경우가 많습니다.
문제는 이 테이블이 너무 크다보니, 인덱스도 덩달아 크기가 커집니다.
이러면 index scan 을 위해 메모리에 인덱스를 올릴 때 많은 메모리를 소비하게 됩니다.

하지만 파티션을 통해서 거대한 table 을 쪼개면 각각의 table 단위로 인덱스가
생성되서 인덱스의 크기가 작아집니다. 덕분에 index scan 을 위해서 index 정보를 메모리에 올리는 IO 작업이 줄어듭니다.

 

2. sequential scan

이미 알고 있겠지만, 어떤 테이블에서 조건절을 쓰더라도 대부분의 row 를 읽어야 하는 경우에는 index scan 보다 sequential scan 이 훨배 효율적입니다. partitioning 을 잘하면 이런 혜택을 누릴 수 있습니다.

 

3. Bulk 성 데이터 관리

벌크성 insert, delete 대신에 ALTER TABLE ATTACH PARTITION , doing ALTER TABLE DETACH PARTITION 를 통해서 거대한 Data Set 을 없애거나 추가할 수 있습니다. 추가적으로 벌크성 insert, delete 에 의한 vacuum overhead 를 없앨 수 있습니다.

 

4. 부분적 데이터의 저장소 변경

거의 사용되지 않는 data set 에 대해서는 SSD 같은 비싼 보조기억장치가 아닌, HDD 처럼 비교적 값싼 보조기억 장치로 옮길 때 편합니다.

출처 : https://velog.io/@dailylifecoding/postgresql-table-partitioning

 

[PostgreSQL] Table Partitioning (테이블 파티셔닝)

table partitioning 정의, 장점, 사용법 등을 알아봅시다.

velog.io

 

analyze란?

데이터 베이스 or  테이블 or 컬럼의 통계정보를 갱신하여 쿼리 성능 분석이나 실행속도를 개선할 수 있다.

 

ex)

analyze; #데이터베이스

analyze table1; #테이블

analyze table1 (col1, col2); #컬럼

 

analyze의 verbose옵션을 사용하여 해당 쿼리의 수행내역을 자세히 확인가능.

ex) 

analyze verbose table1;

'DB > Postgresql' 카테고리의 다른 글

MVCC  (1) 2024.04.11
postgresql - vacuum  (0) 2024.04.11
Window 함수  (0) 2024.04.09
SQL - Explain  (1) 2024.04.09
DB index  (0) 2024.04.08