Ответ
В последнем проекте на PostgreSQL общий объем данных составлял около 500 ГБ. Основные таблицы:
| Таблица | Примерный объем записей | Назначение |
|---|---|---|
users |
~10 млн | Данные пользователей |
transactions |
~150 млн | Финансовые операции |
action_logs |
~1 млрд | Логирование действий |
Примененные методы оптимизации:
- Индексация: Создание составных индексов для частых запросов.
@Entity @Table(name = "transactions", indexes = { @Index(name = "idx_user_created", columnList = "user_id, created_at") }) public class Transaction { ... } - Партиционирование: Таблица
action_logsбыла разделена по диапазонам дат (PARTITION BY RANGE (created_at)). - Репликация: Настройка реплик для чтения, чтобы разгрузить primary-сервер.
Нагрузка составляла до 5k RPS, средний размер строки — 1-2 КБ.