У меня есть карта с огромным количеством данных, заполняются (около 300 000 записей в ках)способов улучшить производительность этого сценария
и итерации его, как показано ниже,
for (Map.Entry<String, List<ClassOBj>> entry : testMap
.entrySet()) {
// send email with map keys as email'id
// email content is populated from the list
// Perform a sql update to the column with the dyanamic value generated here with the email'id
}
Как уже упоминался выше, я беспокоюсь о проблемах производительности, которые будут вызваны вышеупомянутой операцией, которая выполняется внутри цикла for
.
Update:
сценарий. Я повторяю карту, которая содержит большой объем данных,
При повторении этого я получаю идентификатор пользователя, и я должен сделать вычисление идентификатора пользователя. Например, рассмотрим userid+some constants
, и это должно быть обновлено в таблице базы данных ,
, а также должен быть добавлен к содержанию электронной почты вместе со значениями списка с моей карты
так я думал, что пакетные обновления не возможно, я правильно с моим пониманием?
Должен ли я следовать этому подходу? или пойти с любыми альтернативными идеями
Идеальный сценарий - не делать дорогостоящие вызовы ресурсов - например, вызовы DB в цикле. Используйте промежуточные коллекции для хранения данных и использования массового обновления/массового удаления. Если это с 'Hibernate', сделайте' flush' после цикла. – VinayVeluri
спасибо за ваше предложение. Как я объяснил выполненные операции. вы могли видеть, что массовые обновления не могут выполняться в качестве генерации значений dyanamic здесь –
Создайте карту с ключом для хранения электронной почты и значения - если вам нужно какое-либо динамическое значение. Вместо того, чтобы выполнять обновление SQL, добавьте карту (хотя она динамическая, все значения, которые могут быть обновлены, будут на карте). Вы можете рассмотреть значения карт, которые могут быть обновлены напрямую. – VinayVeluri