Senior
48
Bir milyon kullanıcısı olan ve bunlardan sadece bininin aktif olduğu bir tablodaki veri değiştirme işlemlerini nasıl hızlandırabilirsiniz?
Sorulan şirketler
AI'dan gelen yanıt
sobes.tech yapay zeka
Чтобы ускорить операции изменения данных в таблице с миллионом пользователей, из которых активных только тысяча, стоит сфокусироваться на оптимизации именно для активных пользователей:
- Используйте индексы по полям, которые позволяют быстро находить активных пользователей (например, индекс по полю
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();
}