【问题标题】:Hibernate performance optimization during inserts插入期间的休眠性能优化
【发布时间】:2011-11-05 02:10:27
【问题描述】:

我们最近增加了我们的 java 应用程序正在使用的数组之一的大小,现在性能已经显着下降。我们看到性能问题特别是由于通过休眠完成的数据库插入。我们正在对单个记录进行单次插入,并且需要一分钟才能完成插入!我想知道是否有一些配置不正确会导致这种情况以及是否有现成的解决方案。

谢谢,

艾略特

【问题讨论】:

  • 如果我们看到一些代码,我们可能会提供帮助。
  • 你使用的是什么数据库?
  • 在这一分钟内进行一系列线程转储(jstack -l )并附加将记录插入数据库的线程的堆栈跟踪。
  • @svaor:线程转储在这里很可能无济于事。 Hibernate 和这里​​的问题处于更高的层次。 OP 很可能能够通过查看生成的查询并了解与表交互的成本有多大(基于大小、索引等)来追踪效率低下。
  • @cherouvim 我只是想检查一下。转储系列可以显示长时间活动的地方 - 休眠会话(例如一些刷新,脏对象搜索......),池(结帐/签入语句或连接),网络(一些数据库交互,数据库索引,阻塞会话......),当前的业务逻辑(一些计算或不整洁的事务机制)或者可能是其他东西。因为这个问题不够确定......

标签: java database performance hibernate


【解决方案1】:

尝试为您的休眠设置批量大小参数。这将允许您在一个数据库更改中调用多个插入。

还要检查所有插入是否发生在同一个事务中。尝试例如提交每 100 次插入。

【讨论】:

    猜你喜欢
    • 2011-03-02
    • 2017-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多