Sobes.tech
Назад к вопросам
Senior
6

Как ускорить операции изменения данных в таблице с миллионом пользователей, из которых активных только тысяча?

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

sobes.tech AI

Чтобы ускорить операции изменения данных в таблице с миллионом пользователей, из которых активных только тысяча, стоит сфокусироваться на оптимизации именно для активных пользователей:

  • Используйте индексы по полям, которые позволяют быстро находить активных пользователей (например, индекс по полю active = true).
  • Выполняйте обновления только по отфильтрованному набору активных пользователей, чтобы не трогать всю таблицу.
  • Рассмотрите возможность партиционирования таблицы, выделив активных пользователей в отдельный партицион или таблицу.
  • Используйте пакетные обновления (batch updates), чтобы уменьшить количество транзакций.
  • Если возможно, применяйте ленивые обновления или обновляйте данные асинхронно.

Пример на SQL:

UPDATE users
SET last_login = NOW()
WHERE active = TRUE;

В Java можно использовать batch update с JDBC:

String sql = "UPDATE users SET last_login = ? WHERE id = ?";
try (PreparedStatement ps = connection.prepareStatement(sql)) {
    for (User user : activeUsers) {
        ps.setTimestamp(1, new Timestamp(System.currentTimeMillis()));
        ps.setLong(2, user.getId());
        ps.addBatch();
    }
    ps.executeBatch();
}