目录

主要特点

附加的功能

SQL 支持

安全功能

其他功能和工具

使用中的 H2

连接方式

嵌入式模式

服务器模式

混合模式

主要特点

  • 非常快的数据库引擎
  • 开源
  • 用 Java 编写
  • 支持标准 SQL、JDBC API
  • 嵌入式和服务器模式,集群支持
  • 强大的安全功能
  • 可以使用 PostgreSQL ODBC 驱动程序
  • 多版本并发

附加的功能

  • 基于磁盘或内存中的数据库和表、只读数据库支持、临时表
  • 事务支持(未提交读、已提交读、可重复读、快照)、2-phase-commit
  • 多连接,行级锁定
  • 基于成本的优化器,使用遗传算法进行复杂查询,零管理
  • 可滚动和可更新的结果集支持,大型结果集,外部结果排序,函数可以返回一个结果集
  • 加密数据库 (AES)、SHA-256 密码加密、加密功能、SSL

SQL 支持

  • 支持多种模式,信息模式
  • 具有级联的参照完整性/外键约束,检查约束
  • 内连接和外连接、子查询、只读视图和内联视图
  • 触发器和 Java 函数/存储过程
  • 许多内置功能,包括 XML 和无损数据压缩
  • 广泛的数据类型,包括大对象 (BLOB/CLOB) 和数组
  • 序列和标识列,生成的列(可用于基于函数的索引)
  • ORDER BY、GROUP BY、HAVING、UNION、OFFSET / FETCH(包括 PERCENT 和 WITH TIES)、LIMIT、TOP、DISTINCT / DISTINCT ON (...)
  • 窗口函数
  • 整理支持,包括对 ICU4J 库的支持
  • 支持用户和角色
  • IBM DB2、Apache Derby、HSQLDB、MS SQL Server、MySQL、Oracle 和 PostgreSQL 的兼容模式。

安全功能

  • 包括 SQL 注入问题的解决方案
  • 用户密码认证使用 SHA-256 和 salt
  • 对于服务器模式连接,用户密码永远不会通过网络以纯文本形式传输(即使使用不安全的连接;这仅适用于 TCP 服务器,而不适用于 H2 控制台;如果您将密码设置为数据库 URL)
  • 所有数据库文件(包括可用于备份数据的脚本文件)都可以使用 AES-128 加密算法进行加密
  • 远程 JDBC 驱动程序支持基于 TLS 的 TCP/IP 连接
  • 内置 Web 服务器支持通过 TLS 的连接
  • 可以使用字符数组而不是字符串将密码发送到数据库

其他功能和工具

  • 占用空间小(约 2.5 MB),内存要求低
  • 多种索引类型(b-tree、tree、hash)
  • 支持多维索引
  • CSV(逗号分隔值)文件支持
  • 支持链接表和内置的虚拟“范围”表
  • 支持该EXPLAIN PLAN说法;复杂的跟踪选项
  • 可以延迟或禁用数据库关闭以提高性能
  • 具有自动完成功能的基于 Web 的控制台应用程序(翻译成多种语言)
  • 数据库可以生成SQL脚本文件
  • 包含一个可以转储数据库内容的恢复工具
  • 支持变量(例如计算运行总计)
  • 自动重新编译准备好的语句
  • 使用少量数据库文件
  • 对每条记录和日志条目使用校验和以确保数据完整性
  • 经过良好测试(高代码覆盖率,随机压力测试)

使用中的 H2

有关与 H2 一起使用或使用 H2 的应用程序列表,请参阅: 链接。

连接方式

支持以下连接模式:

  • 嵌入式模式(使用 JDBC 的本地连接)
  • 服务器模式(通过 TCP/IP 使用 JDBC 或 ODBC 进行远程连接)
  • 混合模式(本地和远程同时连接)

嵌入式模式

在嵌入式模式下,应用程序使用 JDBC 从同一 JVM 中打开数据库。这是最快和最简单的连接模式。缺点是一个数据库在任何时候都只能在一个虚拟机(和类加载器)中打开。与所有模式一样,支持持久性和内存数据库。对同时打开的数据库数或打开的连接数没有限制。

在嵌入式模式下,I/O 操作可以由执行 SQL 命令的应用程序线程执行。应用程序可能不会中断这些线程,它可能导致数据库损坏,因为 JVM 在线程中断期间关闭了 I/O 句柄。考虑控制应用程序执行的其他方法。当可能发生中断时,可以使用async: 文件系统作为解决方法,但不能保证完全安全。建议改用客户端-服务器模式,客户端可能会中断自己的线程。

h2 数据库与sqlite h2数据库性能_服务器

 

服务器模式

使用服务器模式(有时称为远程模式或客户端/服务器模式)时,应用程序使用 JDBC 或 ODBC API 远程打开数据库。需要在同一台或另一台虚拟机或另一台计算机上启动服务器。通过连接到该服务器,许多应用程序可以同时连接到同一个数据库。在内部,服务器进程以嵌入模式打开数据库。

服务器模式比嵌入式模式慢,因为所有数据都通过 TCP/IP 传输。与所有模式一样,支持持久性和内存数据库。每个服务器同时打开的数据库数量或打开的连接数没有限制。

h2 数据库与sqlite h2数据库性能_服务器_02

混合模式

混合模式是嵌入式模式和服务器模式的结合。第一个连接到数据库的应用程序在嵌入式模式下执行此操作,但也会启动服务器,以便其他应用程序(在不同进程或虚拟机中运行)可以同时访问相同的数据。本地连接与仅在嵌入式模式下使用数据库一样快,而远程连接则稍慢一些。

服务器可以在应用程序内启动和停止(使用服务器 API),也可以自动启动和停止(自动混合模式)。使用自动混合模式时,所有想要连接到数据库的客户端(无论是本地连接还是远程连接)都可以使用完全相同的数据库 URL 进行连接。

h2 数据库与sqlite h2数据库性能_h2 数据库与sqlite_03