Những điều học được sau 5 năm mở rộng PostgreSQL
(onesignal.com)Dịch vụ thông báo đẩy OneSignal đã vận hành 75TB dữ liệu trên 40 máy chủ DB và rút ra những bài học sau
-
Tổng quan dữ liệu: các bảng
subscribers,notificationslà lớn nhất -
Bloat: hiện tượng chiếm nhiều dung lượng hơn, chậm hơn và cần nhiều sức mạnh tính toán hơn
→ Table bloat: VACUUM
→ Index bloat: tối ưu hóa Heap Only Tuple(HOT)
→ bật autovacuum
→ tự động hóa partitioning bảng bằng extension pg_partman
→ pg_repack và pgcompacttable
- Nâng cấp cơ sở dữ liệu
→ pg_upgrdae yêu cầu đưa cơ sở dữ liệu offline nên không thể chọn
→ thiết lập riêng máy chủ PostgreSQL phiên bản mới và dùng logical replication với extension pglogical
- XID Wraparound
→ Tính năng MVCC(Multi Version Concurrency Control) của PostgreSQL sử dụng transaction ID 32-bit nên nếu có nhiều transaction thì có thể nhanh chóng vượt ngưỡng
→ việc giám sát lượng XID còn lại là rất quan trọng
→ autovacuum_freeze_max_age
- Replica Promotion
→ để promote Replica nhanh, đặt phía sau haproxy
- Partitioning
→ các phiên bản PostgreSQL gần đây đã tích hợp sẵn tính năng table partitioning
→ khi cần partitioning, nếu có thể thì nên chia thành nhiều partition
OneSignal dự định partition từ 16 lên 256, rồi tiếp tục lên 4096
- Sharding
→ không có hỗ trợ tích hợp sẵn
→ ban đầu sharding theo Tenant ID, được phân chia theo phạm vi của UUID v4
→ hiện đang xây dựng data proxy có nhận biết partition và shard
1 bình luận
Các điểm yếu của PostgreSQL https://vi.news.hada.io/topic?id=1829
Những tính năng ít được biết đến của PostgreSQL V12 https://vi.news.hada.io/topic?id=988
Tiết kiệm dung lượng DB PostgreSQL https://vi.news.hada.io/topic?id=3674