【问题标题】:Limit embedded DB memory usage & write to file immediately限制嵌入式数据库内存使用并立即写入文件
【发布时间】:2016-09-29 20:10:48
【问题描述】:

我想为我的 Spring Boot 应用程序提供一个基于文件的 SQL 数据库,它不需要专用的数据库服务器并且开箱即用,例如 HSQLDB 或 H2。 此外,我希望该数据库主要在文件系统上工作并限制其内存使用。然而,无论我使用 HSQLDB 还是 H2,更改只会在关机时保存到磁盘,并且内存使用量会激增。

我想立即将对数据库的所有更改保存到磁盘,而不是一直将所有更改保存在内存中。
我的 Spring Boot 数据源 url 当前是:jdbc:hsqldb:file:data/xxx

我是否误解了 HSQLDB 和 H2 的功能,还是我缺少配置设置?

【问题讨论】:

    标签: spring-boot h2 hsqldb


    【解决方案1】:

    这是可配置的

    jdbc:hsqldb:file:filename;hsql.default_table_type=cached;hsqldb.cache_size=500;hsqldb.write_delay=false
    

    这些设置表示基于磁盘的表,其中 500KB 用于内存缓存(实际内存使用量可能是两倍)和立即将更改写入磁盘。

    【讨论】:

    • 我已经尝试过这些设置。这次我更努力地发现了我的问题:Windows Explorers 默认目录视图和文件搜索工具“Everything”都没有显示/更新 HSQLDB 文件的动态变化的文件大小:您必须右键单击文件并单击属性才能看看它现在的大小!驱动器属性通过单击窗口刷新正确的已用/可用空间。我猜这是因为文件由 HSQLDB 保持打开状态。在关闭我的应用程序时,文件大小会刷新,这就是为什么我认为它在运行时不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-19
    • 1970-01-01
    • 2018-07-24
    • 1970-01-01
    相关资源
    最近更新 更多