optimize updating
This commit is contained in:
parent
669236e696
commit
f083716071
2 changed files with 15 additions and 2 deletions
|
|
@ -165,6 +165,7 @@ public class SignalService {
|
||||||
public boolean updateFlags(Map<Integer, PhoneFidMap> fidsMap, Integer packageId) {
|
public boolean updateFlags(Map<Integer, PhoneFidMap> fidsMap, Integer packageId) {
|
||||||
log.info("Start calculating flags for subjects batch. PackageId: {}", packageId);
|
log.info("Start calculating flags for subjects batch. PackageId: {}", packageId);
|
||||||
Map<Integer, FlagsService.FlagsData> flagsDataMap = flagsService.findFlags(fidsMap.keySet().stream().toList());
|
Map<Integer, FlagsService.FlagsData> flagsDataMap = flagsService.findFlags(fidsMap.keySet().stream().toList());
|
||||||
|
List<PhoneFidMap> subjectToUpdate = new ArrayList<>();
|
||||||
for (Map.Entry<Integer, FlagsService.FlagsData> entry : flagsDataMap.entrySet()) {
|
for (Map.Entry<Integer, FlagsService.FlagsData> entry : flagsDataMap.entrySet()) {
|
||||||
Integer fid = entry.getKey();
|
Integer fid = entry.getKey();
|
||||||
FlagsService.FlagsData flagsData = entry.getValue();
|
FlagsService.FlagsData flagsData = entry.getValue();
|
||||||
|
|
@ -175,8 +176,20 @@ public class SignalService {
|
||||||
phoneFidMap.setFlag90days(flagsData.getFlag90days());
|
phoneFidMap.setFlag90days(flagsData.getFlag90days());
|
||||||
phoneFidMap.setCalculatedAt(LocalDateTime.now());
|
phoneFidMap.setCalculatedAt(LocalDateTime.now());
|
||||||
|
|
||||||
phoneFidMapMapper.updatePhoneFid(phoneFidMap);
|
subjectToUpdate.add(phoneFidMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
log.debug("Start updating subject's batch");
|
||||||
|
if (!subjectToUpdate.isEmpty()) {
|
||||||
|
int updateBatchSize = 7000; // 9 параметров на одну запись для обновления. Максимальное количество параметров ~65000
|
||||||
|
for (int j = 0; j < subjectToUpdate.size(); j += updateBatchSize) {
|
||||||
|
int endIndex = Math.min(j + updateBatchSize, subjectToUpdate.size());
|
||||||
|
phoneFidMapService.updatePhoneFidMaps(subjectToUpdate.subList(j, endIndex));
|
||||||
|
log.trace("Updated fids and flags for subject's batch from: {} to: {}. Total count: {}. PackageId: {}", j, endIndex, subjectToUpdate.size(), packageId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
log.debug("Complete updating subject's batch");
|
||||||
|
|
||||||
log.info("Finish calculating flags for subjects. PackageId: {}. Batch size: {}", packageId, fidsMap.size());
|
log.info("Finish calculating flags for subjects. PackageId: {}. Batch size: {}", packageId, fidsMap.size());
|
||||||
return !fidsMap.isEmpty();
|
return !fidsMap.isEmpty();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,7 @@
|
||||||
<appender-ref ref="FILE-JSON"/>
|
<appender-ref ref="FILE-JSON"/>
|
||||||
</logger>
|
</logger>
|
||||||
|
|
||||||
<logger name="ru.nbch.credit_tracker.service" level="DEBUG" additivity="false">
|
<logger name="ru.nbch.credit_tracker.service" level="TRACE" additivity="false">
|
||||||
<appender-ref ref="FILE"/>
|
<appender-ref ref="FILE"/>
|
||||||
<appender-ref ref="FILE-JSON"/>
|
<appender-ref ref="FILE-JSON"/>
|
||||||
<appender-ref ref="CONSOLE"/>
|
<appender-ref ref="CONSOLE"/>
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue