database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 9864 게시물 읽기
No. 9864
1억건 table의 partition 구성을 준비중입니다.
작성자
김은경(iskylove79)
작성일
2017-07-24 11:53
조회수
8,183

단일 Table의 row수가 1억건을 넘어가게 되어서 관련 table의 partition을 검토 중입니다.postgresql로는 partition을 해보지 않아서 혹시 postgres 만의 주의 점이 있을런지 고수분들의 의견 여쭤봅니다.

구글링 결과로는 아래 3가지 정도 질문 사항이 생겼습니다.

1. 구글링 해본 봐로는 postgresql은 상속 개념으로 partition을 구현해서 빈 부모 table 밑에 자식 table들의 존재하는 형태로 구현이 되는것같은데요...
insert / update / delete 시에 function / trigger 가 필요한데 속도 저하 이슈가 있음. (10에서는 개선이 되었다고 하던데 아직 베타버전이라 논외)

=> 많이 저하되나요? 다른 개선 방법은 없을까요?? 추가 partition 생성시엔 자식 table 추가하고 function /trigger 만 수정하면 되나요??

2. global index는 안되고 각각의 자식 table의 local index 만 가능한 점도 관리 요소일수 있음

=> 자식 table에 각각 index 를 달수있다는 장점이자.. 단점 외에 고려할 사항이 뭐가 더 있을가요?? fk는 사용할수있을것같긴 한데 제약이 있나요?

3. pg_partman 을 사용하는것은 어떤가요??

그외에도 운영상 이슈가 될만한 고려 사항들이 있을런지 고수님들의 의견 부탁드립니다.

이 글에 대한 댓글이 총 2건 있습니다.

1.insert는 당연히 조건에 따른 check를 하기에 성능 저하 이슈가 있습니다.

그렇지만 update나 delete시에는 partition pruning이 잘 되도록 파티션 기준 값이나 인덱스 설계를 잘하신다면 이 부분에 대해서는 이점이 있겠죠

(이 점은 파티션테이블의 특징이죠)

 

2. FK에 대해서는 테스트는 안해봐서 명확히는 말씀못드리나 제 생각엔 안사용하는 것이 좋을듯합니다.

 

3. pg_partman

이것도 결국은 스크립트를 편하게 명령어로 제공하는 것으로 알고 있는데

이건 관리적인 요소이기에 직접 스크립트를 만드시던가 충분한 테스트를 해보셔야 할듯합니다.

김주왕(kimjuking)님이 2017-07-25 14:07에 작성한 댓글입니다.

주왕님이 잘 정리를 하셔서 약간의 추가 설명만 보텔게요.

 

1. 그냥 자료를 입력할 때보다 트리거가 작동하고, 그 트리거에 지정한 함수가 실행되는 만큼 속도 저하가 있습니다. 통상 10ms ~ 50ms 정도의 속도 저하는 있겠죠.

하위 테이블 추가 삭제시 트리거에 지정하는 함수만 수정하면 됩니다.

2. 전역 인덱스 - 특히 unique 인덱스가 없는 것은 치명적인 문제이긴 하나, 이게 정말 꼭 필요한 경우는 실무환경에서 그다지 많지 않더군요. 단지 인덱스와, 제약조건이 하위테이블에 각각 있어야 한다는 불편함이 있을 뿐입니다.

실 자료가 하위테이블에서 관리 되기 때문에, 참조키와 같은 제약조건은 상위테이블에 있어봐야 적용되지 않습니다.  그냥 하위 테이블 단독이다고 판단하고 잘 설계하시면 특별한 문제점은 생기지 않습니다.

3. 3rd party 도구들은 postgresql 보다 검증에 대한 완성도가 떨어집니다. 그 점 감안해서 쓰면 됩니다.

 

그냥 그럭저럭 10년째 파티션 기능이 구현되어 있지 않는 DB로 파티션 흉내를 내며 쓰고 있었으니, 그 쓰는 사람이 잘 쓰면 특별하게 고생안하고 쓸거라고 우깁니다. :)

 

김상기(ioseph)님이 2017-07-31 00:02에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
9867PostgreSQL 도와주세요 ㅠㅠ 오라클 TO_MULTI_BYTE [3]
홍민수
2017-08-10
6882
9866sysbench 벤치마킹 결과 [4]
컴공
2017-08-03
8004
9865PostgreSQL 에도 remap_table 같은 기능이 있나요? [4]
검콤이
2017-07-31
6841
98641억건 table의 partition 구성을 준비중입니다. [2]
김은경
2017-07-24
8183
9863PostgreSQL / MySQL Benchmark Tool [4]
컴공
2017-07-18
7672
9861postgresql upgrade 9.3.16 to 9.6.3 [24]
검콤이
2017-07-14
7593
9860테이블스페이스 생성시 왜 이런 에러가 잘까요?? [1]
억규
2017-07-06
7273
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.048초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다