Как масштабировать SQL БД
Python
Senior
Без компании
Как масштабировать SQL БД
Ответы
# Горизонтальное и вертикальное масштабирование SQL БД
**Вертикальное масштабирование (Scale Up)**
- Увеличение мощности сервера (CPU, RAM, SSD)
- Просто в реализации, но имеет физические ограничения
- Пример для PostgreSQL:
```
ALTER SYSTEM SET shared_buffers = '4GB';
ALTER SYSTEM SET work_mem = '32MB';
```
**Горизонтальное масштабирование (Scale Out)**
- **Шардинг** - разделение данных по разным серверам
- По диапазону значений (range)
- По хэшу (hash)
- По списку (list)
- **Репликация**
- Master-Slave для чтения
- Multi-Master для записи
- **Промежуточные решения**
- Через прокси (PgBouncer, ProxySQL)
- Использование ORM с поддержкой шардинга
Пример шардинга в Django:
```
DATABASES = {
'default': {}, # Роутер
'users': {...}, # Шард 1
'orders': {...} # Шард 2
}
```
Лучший подход - комбинация методов в зависимости от нагрузки (чтение/запись).