Встречается на собеседованиях • сегодня

Какие знаешь методы оптимизации приложения, если запросы к БД работают медленно после увеличенной нагрузки

  1. Индексы: Добавь индексы на часто запрашиваемые поля и поля в условиях WHERE, JOIN, ORDER BY.

    sql
    CREATE INDEX idx_user_email ON users(email);
  2. Оптимизация запросов: Проверь EXPLAIN ANALYZE для выявления узких мест. Избегай SELECT *, используй пагинацию (LIMIT, OFFSET).

  3. Кэширование: Примени Redis или Hazelcast для кэширования результатов частых запросов.

  1. Batch-операции: Замени множественные INSERT на batch-запросы.

    java
    jdbcTemplate.batchUpdate("INSERT INTO orders VALUES (?, ?)", batchArgs);
  2. Connection Pool: Настрой пул соединений (HikariCP, Tomcat JDBC) для уменьшения накладных расходов.

  3. Шардинг/Репликация: Раздели БД на шарды или используй read-реплики для распределения нагрузки.

  4. ORM-оптимизация: В Hibernate/JPA включай ленивую загрузку (fetch = LAZY), избегай N+1 проблем с JOIN FETCH.

  5. Асинхронность: Используй @Async или реактивные подходы (WebFlux) для неблокирующих операций.

  6. Denormalization: В некоторых случаях денормализация данных ускоряет чтение.

  7. Профилирование: Инструменты вроде VisualVM или JProfiler помогут найти узкие места в коде.

Пример для кэширования в Spring:

java
@Cacheable("users")
public User getUserById(Long id) {
    return userRepository.findById(id).orElseThrow();
}
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы