Senior
42
Wie kann man die Datenänderungsoperationen in einer Tabelle mit einer Million Benutzer, von denen nur tausend aktiv sind, beschleunigen?
Unternehmen wurden gefragt
Antwort von AI
sobes.tech KI
Чтобы ускорить операции изменения данных в таблице с миллионом пользователей, из которых активных только тысяча, стоит сфокусироваться на оптимизации именно для активных пользователей:
- Используйте индексы по полям, которые позволяют быстро находить активных пользователей (например, индекс по полю
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();
}