Senior
Como acelerar as operações de alteração de dados numa tabela com um milhão de utilizadores, dos quais apenas mil estão ativos?
sobes.tech IA
Resposta da IA
Чтобы ускорить операции изменения данных в таблице с миллионом пользователей, из которых активных только тысяча, стоит сфокусироваться на оптимизации именно для активных пользователей:
- Используйте индексы по полям, которые позволяют быстро находить активных пользователей (например, индекс по полю
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();
}