Какие знаешь способы оптимизации чтения БД

Python Senior СБЕР Роботы
Какие знаешь способы оптимизации чтения БД
Ответы
- **Индексация** – создание индексов на часто используемых полях для ускорения поиска. ``` # Пример создания индекса в SQLAlchemy class User(db.Model): __tablename__ = 'users' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(100), index=True) # Индекс на поле name ``` - **Пагинация** – разбивка данных на страницы для уменьшения нагрузки. ``` # Пример пагинации в Flask-SQLAlchemy users = User.query.paginate(page=1, per_page=10) ``` - **Ленивая загрузка (Lazy Loading)** – загрузка связанных данных только при обращении. ``` # SQLAlchemy: lazy='select' (по умолчанию) class Post(db.Model): comments = db.relationship('Comment', lazy='select') ``` - **Жадная загрузка (Eager Loading)** – предварительная загрузка связанных данных для избежания N+1 проблемы. ``` # SQLAlchemy: joinedload from sqlalchemy.orm import joinedload posts = Post.query.options(joinedload(Post.comments)).all() ``` - **Кэширование** – сохранение результатов запросов (Redis, Memcached). - **Оптимизация запросов** – использование `select` вместо `select *`, избегание подзапросов. - **Репликация и шардинг** – распределение нагрузки между серверами. - **Использование ORM-оптимизаций** – например, `bulk_insert`, `update` вместо поштучных операций. - **Анализ запросов** – инструменты типа `EXPLAIN` в PostgreSQL для выявления узких мест.