gpt4 book ai didi

java - Hibernate + 支持 SQLite Pragmas 在 Windows 7 机器上提高速度

转载 作者:太空宇宙 更新时间:2023-11-04 08:32:21 25 4
gpt4 key购买 nike

使用的软件:

  • hibernate 3.6
  • sqlite jbdc 3.6.0
  • java jre 1.6.X

我在通过 TCP 连接传输数据时遇到问题(20 000 个条目)

  • 在 hibernate 的帮助下创建 sqlite 数据库
  • 使用 hibernateview 和 hibernate 注解创建查询
  • 还使用了 hibernate proberties
  • 在 Windows 7 上,启用 hibernate 且未启用 sqlite 编译指示的情况下存储 20,000 个条目可持续近 6 分钟(约 330 秒)
  • 在 Windows 7 上,在没有 hibernate 和启用所有相关 sql 编译指示的情况下存储 20 000 个条目大约需要 2 分钟(约 109 秒)
  • 在 Windows XP 和 Windows Vista 上使用 hibernate 和 sqlite 进行没有编译指示的测试运行速度很快,但在 win7 上它几乎持续是 XP 机器上的 3 倍(~ 330 秒 - win 7)
  • 在 Windows 7 上,我们希望激活 sqlite 编译指令来提高速度
  • 相关的编译指示是:<​​/p>

    PRAGMA cache_size = 400000;
    PRAGMA synchronous = OFF;
    PRAGMA count_changes = OFF;
    PRAGMA temp_store = MEMORY;
    PRAGMA auto_vacuum = NONE;

问题:我们必须使用 Hibernate(没有 Nhibernate!)

问题:

  • 如果可能的话,如何在 hibernate sqlite 连接中启用这些编译指示?
  • 是否可以使用 hibernate 来做到这一点?

最佳答案

我还在寻找某种方法来设置另一个编译指示:PRAGMAforeign_keys = ON 用于 hibernate 连接。我没有找到任何关于这个主题的内容,我想出的唯一解决方案是装饰 SQLite JDBC 驱动程序并在每次检索新连接时设置所需的编译指示。请参阅下面的示例代码:

@Override
public Connection connect(String url, Properties info) throws SQLException {
final Connection connection = originalDriver.connect(url, info);
initPragmas(connection);
return connection;
}

private void initPragmas(Connection connection) throws SQLException {
//Enabling foreign keys
connection.prepareStatement("PRAGMA foreign_keys = ON;").execute();
}

完整示例在这里:https://gist.github.com/52dbc7066787684de634 。然后,在初始化 hibernate.connection.driver_class 属性时,只需将其设置为您的 package.DriverDecorator

关于java - Hibernate + 支持 SQLite Pragmas 在 Windows 7 机器上提高速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7239913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com