gpt4 book ai didi

java - 连接到 H2 数据库时 MV_STORE = false 是什么意思?

转载 作者:行者123 更新时间:2023-12-04 12:57:04 27 4
gpt4 key购买 nike

我正在使用带有 GUI 的嵌入式数据库与它进行通信。
我很好奇是什么MV_STORE = false在我的网址中是什么意思?

public DBconnect() throws SQLException, ClassNotFoundException{
clients = FXCollections.observableArrayList();
Class.forName("org.h2.Driver");
c = DriverManager.getConnection
("jdbc:h2:~/Database;MV_STORE=false", "admin", "Fitness1");
}

最佳答案

存储引擎
H2提供了不止一个 storage engine用于保存数据。
➥ MVStore 是这些存储引擎之一,是最新的,也是当前的默认值。
引用透彻documentation page on MV_STORE :

Storage Engine for H2

For H2 version 1.4 and newer, the MVStore is the default storage engine (supporting SQL, JDBC, transactions, MVCC, and so on). For older versions, append ;MV_STORE=TRUE to the database URL.


据推测,将该标志设置为 false 会启用替代存储引擎。
选择 MVStore 与否
至于为什么你可能会选择使用或避免使用 MVStore,我不知道细节。搜索引擎出现 this old Google Groups post在 2015-08 年以 Thomas 的名字命名,所以我想知道这可能是 H2 的发明者 Thomas Mueller。

Hi,

The MVStore is relatively new and not yet as mature as the old storage mechanism (the PageStore). See also the documentation at http://h2database.com/html/mvstore.html . Some advantages compared to the PageStore are: multi-version, simpler, more concurrent, writes less, optimized for SSDs. Disadvantage is that it temporarily needs more disk space, and is currently a bit slower.

The PageStore is quite mature and will be supported in the future for some time. However, support will be phased out eventually.

Regards,

Thomas


我假设现在在 2020 年与 2015 年相比,作为 H2 版本 1.4 的默认设置,关于“新的但尚未成熟”的部分不再如此。
多版本并发控制(MCC 或 MVCC)
从一些快速搜索和阅读来看,新的 MVStore 和旧的 PageStore 之间的主要区别似乎是对 multiversion concurrency control (MCC or MVCC) 的支持。 .
  • MVCC 支持是较新的 MVStore 的一个关键功能,并且始终处于启用状态。
  • 旧版 PageStore 中的 MVCC 支持是实验性的,最终被放弃了。

  • 请参阅问题页面:
  • Always use MVCC with MVStore and never use it with PageStore #1204 2018-06 年开张。
  • Remove useless MVCC / no MVCC conditions from MVStore code #1209

  • 顺便说一句,使用 javax.sql.DataSource 通常建议实现来获取连接而不是使用 DriverManager如您的示例代码所示。
    H2 提供了 org.h2.jdbcx.JdbcDataSource类作为这样的实现。见 this documentation page对于您可以设置的选项列表。
    JdbcDataSource ds = new org.h2.jdbcx.JdbcDataSource();
    ds.setURL( "jdbc:h2:~/Database" );
    ds.setUser( "scott" );
    ds.setPassword( "tiger" );
    return ds ; // Return as the more general `javax.sql.DataSource` rather than H2-specific implementation.

    关于java - 连接到 H2 数据库时 MV_STORE = false 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65208440/

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