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 |