- Bài viết bàn về trải nghiệm của tác giả trong việc quản lý hiệu năng Postgres trong một ứng dụng SaaS, khi cơ sở dữ liệu gặp khó khăn trong việc chịu tải.
- Nhóm của tác giả đã mở rộng theo chiều dọc bằng cách thay thế bằng các instance lớn hơn mỗi khi cơ sở dữ liệu trở nên quá bận. Tuy nhiên, họ đã dùng tới instance lớn nhất và đang tiến gần đến tình trạng quá tải.
- Hai hướng giải quyết khả dĩ được đưa ra: sharding ghi sang các cụm cơ sở dữ liệu độc lập, và tách khối nguyên khối thành nhiều dịch vụ liên kết với nhau (microservices).
- Cả hai giải pháp đều có thể tăng năng lực xử lý và mang lại những lựa chọn thú vị về khả năng chịu lỗi cũng như độ bền vững trong vận hành, nhưng sẽ làm độ phức tạp tăng lên đáng kể.
- Tác giả cho rằng chi phí thực sự của việc tăng độ phức tạp là sự chú ý, và điều đó làm mọi quyết định kỹ thuật tiếp theo trở nên phức tạp hơn.
- Tác giả gợi ý rằng trước khi làm độ phức tạp tăng mạnh, thường vẫn có cơ hội "vắt" thêm một chút hiệu năng từ hệ thống hiện có bằng cách điều chỉnh khối lượng công việc, tinh chỉnh hiệu năng, hoặc bổ sung cho hệ thống theo một cách nào đó.
- Trong trường hợp của họ, bằng cách tối ưu các truy vấn nặng, tinh chỉnh cấu hình Postgres và offload một số truy vấn chỉ đọc tốn kém sang DB replica, họ đã giảm mức sử dụng CPU đỉnh theo tuần của cơ sở dữ liệu từ 90% xuống 30%.
- Tác giả kết luận rằng độ phức tạp là cần thiết và không thể tránh khỏi, nhưng tốt hơn hết là nên trì hoãn việc gia tăng độ phức tạp càng lâu càng tốt và trước tiên khai thác tối đa hiệu năng từ hệ thống hiện có.
1 bình luận
Ý kiến trên Hacker News
jointrong cơ sở dữ liệu, đồng thời cho rằng dung lượng lưu trữ rẻ và mọi thứ nên được phi chuẩn hóa để cập nhật trong transaction.