Tech News

제목5년간 PostgreSQL 스케일링 하면서 배운 것2021-04-20 09:39
작성자 Level 10

https://onesignal.com/blog/lessons-learned-from-5-years-of-scaling-postgresql/ 


푸시알림 서비스 OneSignal이 75TB 데이터를 40대의 DB서버에서 운영하며 배운 것들

- 데이터 오버뷰 : subscribers, notifications 테이블이 가장 큼


- Bloat : 더 많은 용량을 차지하고, 느려지고, 컴퓨팅 파워를 더 필요로 하게 되는 현상

ㅤ→ Table bloat : VACUUM

ㅤ→ Index bloat : Heap Only Tuple(HOT) optimization

ㅤ→ autovacuum 켜기

ㅤ→ pg_partman 확장으로 테이블 파티셔닝 자동화

ㅤ→ pg_repack 과 pgcompacttable


- Database Upgrades

ㅤ→ pg_upgrdae 는 데이터베이스 오프라인을 필요로 하므로 선택 불가

ㅤ→ 새 버전 PostgreSQL 서버를 따로 셋업하고 pglogical 확장으로 logical replication 사용


- XID Wraparound

ㅤ→ PostgreSQL 의 MVCC(Multi Version Concurrency Control) 기능은 32비트 트랜잭션 ID를 사용하므로 트랜잭션이 많으면 금방 넘어갈수 있음

ㅤ→ 남은 XID 모니터링은 중요

ㅤ→ autovacuum_freeze_max_age


- Replica Promotion

ㅤ→ 빠른 Replica 의 승격을 위해서 haproxy 뒤에 둠


- Partitioning

ㅤ→ 최근 버전 PostgreSQL은 테이블 파티셔닝 기능을 내장

ㅤ→ 파티셔닝이 필요할때 가능하면 다수의 파티션으로 분할하는 것을 추천

ㅤㅤㅤOneSignal 은 16 에서 256, 다시 4096으로 파티셔닝 할 예정


- Sharding

ㅤ→ 내장 지원은 없음

ㅤ→ 원래는 v4 UUID 를 범위에 따라서 구분한 Tenant ID로 샤딩 했음

ㅤ→ 현재는 파티션과 샤드를 인식하는 데이터 프록시를 만드는 중

G
M
T
음성 기능은 200자로 제한됨
댓글
자동등록방지
(자동등록방지 숫자를 입력해 주세요)