medium · 已确认 · 已计入完成分历史监测重算在保存链路中形成逐条读写
较早时间点的监测补录或修改会同步重算此后的每条监测记录。监测点较多时,保存操作可能明显变慢、延迟监测数据同步,并增加数据库连接、写入和异步任务压力。
证据:src/main/java/com/data/hemodialysis/service/calc/ktv/KtvRealtimeClacService.java:841 for (int i = anchorIndex + 1; i < timeline.size(); i++) {
PatientHemoMedMonitorData current = timeline.get(i);
if (isManualKtv(current)) {
break;
}
EndKtvCalcResult result = calculateIncrementFromPrevious(
recordCode, record, previous, current.getDataTime(), "监测时间线", inputs);
if (!result.isSuccess()) {
break;
}
String rawKtv = KtvOnlineDisplayUtil.formatRawStorage(result.getValue());
// 分段累计没有完整的独立重算输入,清空旧 AUTO 快照并保存 UNKNOWN 来源。
if (!patientHemoMedMonitorDataService.updateIncrementalKtvWithCas(current, rawKtv)) {
建议:保留逐段计算和并发保护,但将后续重算从高频保存请求中解耦,或使用批量持久化、合并审计与合并通知,避免每个后续点触发独立读写链。请在与生产结构和代表性数据量相当的环境使用 EXPLAIN 或 EXPLAIN ANALYZE,核对时间线查询和条件更新的索引、扫描行数及单次保存触发的读写次数。