【问题标题】:JPA and Derby PerformanceJPA 和德比表演
【发布时间】:2014-04-06 20:07:22
【问题描述】:

我使用 JPA 编写了一个应用程序。该应用程序每秒在一个表上进行大约 5 或 6 次插入。插入是通过简单的 Transaction begin、persist 和 transaction commit 完成的。

使用这种方法,应用程序的 CPU 负载非常重(大约 80%)。我使用 JVisualVM 分析了应用程序并得出了以下结果:

这表明大约 30% 的时间用于写入和刷新到日志文件。 此外,setExclusive 方法有 14% 的时间负载。

有没有办法优化这个?也许禁用日志记录?

【问题讨论】:

  • 这不仅仅是为了调试目的而写的信息日志,而是可能写一个事务日志。如果禁用此日志记录机制,您可能会收到损坏或不一致的数据。您可以尝试做的是使用某种批处理来减少交易量。所以“事务开始”多个持久操作,然后事务提交。

标签: java performance jpa derby


【解决方案1】:

enterbios 是对的。禁用日志记录,您将不再拥有数据库,而只是用于写入文件的 SQL(再见酸)。与大多数数据库一样,Derby 使用组提交,即多个事务的日志在单个磁盘写入中分组。但是,如果您执行一次更新、提交、等待,然后再进行一次插入,则组提交的效果将非常小,因为只有一次插入的日志要写入。

setExclusive 时间点指向同一数据的争用(多个线程访问同一个数据库页面)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-27
    • 2014-05-08
    • 2015-05-11
    • 1970-01-01
    • 2015-03-06
    • 1970-01-01
    • 2010-10-25
    • 1970-01-01
    相关资源
    最近更新 更多