You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET应用光伏逆变器CSV数据处理性能优化求助

解决方案

1. 数据分层存储+预聚合,解决数据库膨胀与实时计算压力

  • 冷热数据分离存储:拆分两张核心表
    • 保留原始表存储20秒间隔的细粒度数据,但仅保留近期(比如3个月内)的热数据;
    • 新增聚合统计表,比如pv_hourly_summary(存储每小时总电量、平均功率、峰值功率)、pv_daily_summary(存储每日总电量、当日最高功率时段),年度数据直接从日/小时统计表聚合生成。
  • 定时预计算聚合数据:把汇总逻辑从Index Action中剥离,改用定时任务(比如Quartz、Hangfire或系统cron)定期执行。例如每小时跑一次任务,将过去1小时的原始数据聚合到小时统计表;每天凌晨跑一次任务,将前一天的小时数据聚合到日统计表。用户打开页面时直接读取预计算好的统计数据,无需实时计算。
  • 原始数据归档:超过保留期的原始数据,归档到低成本存储(比如归档数据库、离线CSV文件),平时查询仅访问近期原始数据和聚合表。

2. 优化CSV数据写入逻辑

  • 增量写入而非全量同步:记录最后一次同步到数据库的时间戳,每次同步时只处理CSV中该时间戳之后的新增行,避免重复写入和无效计算。
  • 异步后台写入:把CSV数据入库操作从Index Action中抽离,改成异步后台任务触发。用户打开页面时,直接返回视图,后台异步完成数据同步,不阻塞页面加载。

3. 前端与请求逻辑优化

  • 前端缓存统计数据:将年度供电量、月度统计这类不频繁变化的数据缓存到前端(比如localStorage、sessionStorage),设置合理过期时间(比如1小时)。用户切换视图返回时,优先读取缓存,无需重复请求后端。
  • 按需加载图表数据:年度图表无需一次性加载全年细粒度数据,可根据用户交互(比如选择月份、滚动查看)按需加载对应时段的聚合数据,减少单次请求的数据量。
  • 减少Index Action重复触发:改用单页应用(SPA)模式或前端路由优化,切换视图时不刷新整个页面,仅更新图表区域,避免重复调用后端Index Action。

4. 数据库查询优化

  • 给聚合统计表的时间戳字段建立索引,加快按时间范围查询的速度;
  • 查询原始数据时,强制加上时间范围条件,避免全表扫描。

内容的提问来源于stack exchange,提问作者Elias

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 12:10:20