【问题标题】:Spring Application takes too much timeSpring应用程序花费太多时间
【发布时间】:2018-05-14 05:24:29
【问题描述】:

我编写了一个 SpringMVC 代码来将 PostgreSQL 数据库导出到 ndjson 文件,该代码有效。但是,其中一张表需要 10 秒(Careplan)来记录 100 条记录!

以下是DAO类的代码

public List<DafCarePlanParticipant> getCarePlanparticipantByCareTeam(int id) 
{
        Criteria criteria = getSession().createCriteria(DafCarePlanParticipant.class, "dp").add(Restrictions.eq("careteam", id));

        List<DafCarePlanParticipant> dafCareTeam = criteria.list();

        return dafCareTeam;
}

我在优化此代码时遇到了死胡同。请帮我看看好吗!

谢谢!

【问题讨论】:

  • getSession 是做什么的。你的DafCarePlanParticipant 有多复杂(它真的是一张表还是一半的数据库,里面有所有关系)你真的需要检索所有东西吗(这就是list 正在做的事情)为什么不懒惰地获取东西(使用stream 方法)。
  • 如果您在careteam 列上没有索引并且您的表足够大,那么您应该期待这种行为。如果这是原因,请在列 careteam 上创建索引。
  • 先生,我该怎么做?懒惰的抓取。
  • 我不会为你审查你的代码(或做你的工作)。所以我不打算下载代码并查看它(如果您认为它会添加到您的问题中,请将代码(sn-ps)添加到您的问题中)。还可以使用分析器并检查占用时间的内容。

标签: java spring postgresql spring-mvc


【解决方案1】:

我认为问题可能是由于getSession()。由于getSession() 可能会创建一个新会话,因此每次创建一个新会话都会消耗时间并耗尽您的数据源。

尝试改用getCurrentSession(),看看是否有任何改进。

【讨论】:

  • 我试试看!
猜你喜欢
  • 2017-09-12
  • 1970-01-01
  • 2016-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-07
  • 1970-01-01
相关资源
最近更新 更多