搜尋
首頁資料庫mysql教程H2内存数据库支持存储到文件
H2内存数据库支持存储到文件Jun 07, 2016 pm 03:59 PM
jdk下載記憶體準備工作儲存支援資料庫文件

准备工作 1、下载JDK(本人下载的版本为JDK1.7)、设置环境变量JAVA_HOME,设置PATH(%JAVA_HOME%\bin%)。 2、下载并解压:h2-2014-07-13.zip 官网下载地址:http://www.h2database.com/html/main.html 3、设置环境变量H2_HOME。%H2_HOME%表示为解压的文件

准备工作

1、下载JDK(本人下载的版本为JDK1.7)、设置环境变量JAVA_HOME,设置PATH(%JAVA_HOME%\bin%)。
2、下载并解压:h2-2014-07-13.zip 官网下载地址:http://www.h2database.com/html/main.html
3、设置环境变量H2_HOME。%H2_HOME%表示为解压的文件目录。运行%H2_HOME%\bin\h2.bat 将会自动打开下面网址。(请确认是否安装了jdk,并设置了JAVA_HOME环境变量)
http://localhost:8082/login.jsp?jsessionid=244e36a683f97f0d4f3b000f33530ed1

\

3、点击 connect ,登录。

\

4、执行上图中红色部分sql语句,成功创建test表。

\

因为没有指定数据库文件位置,会自动输出到输出到C:\Users\Administrator下。

\

H2文件结构


%H2_HOME%
-h2
-bin
h2-1.3.154.jar //jar包
h2.bat //Windows控制台启动脚本
h2.sh //Linux控制台启动脚本
h2w.bat //Windows控制台启动脚本(不带黑屏窗口)
+docs 帮助文档
+service //通过wrapper包装成服务。
+src //源代码
build.bat windows构建脚本
build.sh linux构建脚本

H2的使用
支持Embedded,server和in-memory模式以及内存模式。
Embedded模式

1、新建java project工程 H2Test。

\

 

2、%H2_HOME%\bin\h2-1.3.154.jar 复制到 \H2Test\lib下,并加入工程引用。
3、新建Generic H2 (Embedded)数据库,指定:JDBC URL:jdbc:h2:E:\research\workspace\H2Test\db\test,然后执行上面的test sql语句,来创建一个test表。

\

4、新建 TestH2类 主要代码

public static void main(String[] a)
throws Exception {
Class.forName("org.h2.Driver");
Connection conn = DriverManager.
getConnection("jdbc:h2:E:\\research\\workspace\\H2Test\\db\\test", "sa", "");
// add application code here
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM TEST ");
while(rs.next()) {
System.out.println(rs.getInt("ID")+","+rs.getString("NAME"));
}
conn.close();
}


控制台打印出:1,Hi
\

server模式

1、直接将jdbc url 改为:jdbc:h2:tcp://localhost/~/test 就行了。因为我们在上面第一步的时候已经在C:\Users\Administrator创建了test数据库。
你也可以再创建新的数据库,默认都是保存在C:\Users\Administrator下的。
注意:你必须启动服务:%H2_HOME%\bin\h2.bat 或者 以服务模式启动:%H2_HOME%\service\0_run_server_debug.bat ,里面有好几个脚本把H2部署为服务模式。每次机器启动后自动启动H2服务。
2、新建 TestServerH2类 主要代码

public static void main(String[] a)
throws Exception {
Class.forName("org.h2.Driver");
Connection conn = DriverManager.
getConnection("jdbc:h2:tcp://localhost/~/test", "sa", "");
// add application code here
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM TEST ");
while(rs.next()) {
System.out.println(rs.getInt("ID")+","+rs.getString("NAME"));
}
conn.close();
}

运行的结果和上面一样。

内存模式(数据只保存在内存中)

1、新建 TestMemH2类 主要代码

public static void main(String[] a)
throws Exception {
Class.forName("org.h2.Driver");
Connection conn = DriverManager.
getConnection("jdbc:h2:tcp://localhost/mem:test2", "sa", "");
// add application code here
Statement stmt = conn.createStatement();

stmt.executeUpdate("CREATE TABLE TEST_MEM(ID INT PRIMARY KEY,NAME VARCHAR(255));");
stmt.executeUpdate("INSERT INTO TEST_MEM VALUES(1, 'Hello_Mem');");
ResultSet rs = stmt.executeQuery("SELECT * FROM TEST_MEM");
while(rs.next()) {
System.out.println(rs.getInt("ID")+","+rs.getString("NAME"));
}
conn.close();
}

控制台打印出:1,Hello_Mem

\

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

集群 / 高可用性

数据库支持简单的集群/高可用性机制。架构是:两个数据库服务运行在两台不同的计算机上,两台计算机有同样数据库的副本,如果两个服务器都处于运行状态,每个数据库操作都被在两台计算机上执行,如果一台服务器宕机(断电、硬件故障、网络故障等),另外一台计算机仍能提供服务,从这一刻开始,数据库操作仅在一台服务器上执行,直到另外一台服务器恢复运行。

集群仅能用于服务器模式(内嵌模式并不支持集群)。可以在数据库运行状态下恢复集群,但是要求在第二个数据库恢复期间没有应用在改变第一个数据库的数据,因此恢复集群是一个手工的过程。

初始化集群,使用下面的步骤:

· 创建数据库

· 使用CreateCluster工具创建一个数据库福分到另外的地方,并且初始化集群,这样就得到了同样数据的两个数据库

· 启动两个数据库服务(每个数据库的副本)

· 现在可以通过应用客户端连接到数据库

使用创建集群工具

要了解集群如何工作,请尝试下面的例子,在这个例子里,两个数据库驻留在同一台计算机上,但通常,两个数据库在不同的计算机上。

· 创建两个目录:server1,server2。每个目录将模拟一台计算机

· 在第一个目录启动TCP服务,你可以运行下面的命令:

· java org.h2.tools.Server

· -tcp-tcpPort 9101

· -baseDirserver1

· 在第二个目录启动TCP服务,模拟第二个服务器(冗余运行),你能使用下面的命令:

· java org.h2.tools.Server

· -tcp-tcpPort 9102

· -baseDirserver2

· 使用 CreateCluster 工具初始化集群,如果数据库不存在,将创建一个新的空数据库,运行下面命令行:

· java org.h2.tools.CreateCluster

· -urlSourcejdbc:h2:tcp://localhost:9101/~/test

· -urlTargetjdbc:h2:tcp://localhost:9102/~/test

· -user sa

· -serverList localhost:9101,localhost:9102

· 应用或者是H2控制台可以通过下面的JDBC的URL连接数据库:jdbc:h2:tcp://localhost:9101,localhost:9102/~/test

· 如果你停止一个服务(通过杀进程),你注意到另一个机器继续工作,数据库仍能提供访问。

· 恢复集群,你需要先删掉宕机的数据库,然后重启宕机的数据库的服务,再重新运行CreateCluster集群工具。

检测运行状态下的集群

查找哪些节点当前正在运行,通过执行下面的SQL语句:

SELECT VALUE FROM INFORMATION_SCHEMA.SETTINGS WHERENAME='CLUSTER'

结果返回为 '' (两个单引号),说明集群模式被屏蔽,否则,集群服务器列表将被单引号包括着返回,如'server1:9191,server2:9191'。

2、上面的 URL 改为 jdbc:h2:~/mem:test 也是可以的。如果是localhost必须启动服务。

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

数据库连接 URL说明

数据库支持多种连接模式和连接设置,不同的连接模式和连接设置是通过不同的URL来区分的,URL中的设置是不区分大小写。

Topic

URL Format and Examples

嵌入式(本地)连接

jdbc:h2:[file:][]
jdbc:h2:~/test
jdbc:h2:file:/data/sample
jdbc:h2:file:C:/data/sample (Windows only)

内存数据库(私有)

jdbc:h2:mem:

内存数据库(被命名)

jdbc:h2:mem:
jdbc:h2:mem:test_mem

使用TCP/IP的服务器模式(远程连接)

 

jdbc:h2:tcp://[:]/[]
jdbc:h2:tcp://localhost/~/test
jdbc:h2:tcp://dbserv:8084/~/sample

使用SSL/TLS的服务器模式(远程连接)

 

jdbc:h2:ssl://[:]/
jdbc:h2:ssl://secureserv:8085/~/sample;

使用加密文件

jdbc:h2:;CIPHER=[AES|XTEA]
jdbc:h2:ssl://secureserv/~/testdb;CIPHER=AES
jdbc:h2:file:~/secure;CIPHER=XTEA

文件锁

jdbc:h2:;FILE_LOCK={NO|FILE|SOCKET}
jdbc:h2:file:~/quickAndDirty;FILE_LOCK=NO
jdbc:h2:file:~/private;CIPHER=XTEA;FILE_LOCK=SOCKET

仅打开存在的数据库

jdbc:h2:;IFEXISTS=TRUE
jdbc:h2:file:~/sample;IFEXISTS=TRUE

当虚拟机退出时并不关闭数据库

jdbc:h2:;DB_CLOSE_ON_EXIT=FALSE

用户名和密码

jdbc:h2:[;USER=][;PASSWORD=]
jdbc:h2:file:~/sample;USER=sa;PASSWORD=123

更新记入索引

jdbc:h2:;LOG=2
jdbc:h2:file:~/sample;LOG=2

调试跟踪项设置

jdbc:h2:;TRACE_LEVEL_FILE=
jdbc:h2:file:~/sample;TRACE_LEVEL_FILE=3

忽略位置参数设置

jdbc:h2:;IGNORE_UNKNOWN_SETTINGS=TRUE

指定文件读写模式

jdbc:h2:;ACCESS_MODE_LOG=rws;ACCESS_MODE_DATA=rws

在Zip文件中的数据库

jdbc:h2:zip:!/
jdbc:h2:zip:~/db.zip!/test

兼容模式

jdbc:h2:;MODE=
jdbc:h2:~/test;MODE=MYSQL

自动重连接

jdbc:h2:;AUTO_RECONNECT=TRUE
jdbc:h2:tcp://localhost/~/test;AUTO_RECONNECT=TRUE

自动混合模式

jdbc:h2:;AUTO_SERVER=TRUE
jdbc:h2:~/test;AUTO_SERVER=TRUE

更改其他设置

jdbc:h2:;=[;=...]
jdbc:h2:file:~/sample;TRACE_LEVEL_SYSTEM_OUT=3

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
1t内存等于多少GB1t内存等于多少GBFeb 22, 2023 pm 04:55 PM

1t内存等于1024GB。1t内存是指内存的存储容量为“1TB”,而1TB等于1024GB。但这只是计算机原理中理论上的数值,一般在系统显示可用存储空间中会偏少;因为硬盘制造商对硬盘的定义与计算机对硬盘容量的算法不同,导致硬盘标识容量和操作系统中显示的实际容量存在误差。

gear1和gear2内存模式是什么gear1和gear2内存模式是什么Sep 14, 2022 am 11:15 AM

gear1和gear2内存模式指的是CPU的内存控制器与内存频率的比例关系;gear1表示内存控制器频率和内存工作频率之比是“1:1”,而gear2表示内存控制器频率和内存工作频率之比是“1:2”,可减轻内存控制器压力,让内存更容易得到更高的频率。

电脑c盘一般留多大内存电脑c盘一般留多大内存Jun 27, 2023 pm 03:15 PM

电脑C盘一般留50-80G,由于系统在日后使用当中会产生垃圾文件和缓存文件等,因此建议至少预留50GB-80GB的空间给C盘,如果不习惯在安装软件时选择路径,日常也不经常清理电脑,那么至少需要100GB。

板载内存是什么意思板载内存是什么意思Jan 30, 2023 pm 03:21 PM

板载内存是指主板上本身集成的内存,是直接焊接在了电脑的主板上无法更换的。板载有“集成”的意思,是指整合于主板芯片中的功能或硬件,主要有板载显卡、声卡、网卡、RAID等。一般板载硬件功能都较简单,不能完全取代独立硬件;但是购买可以控制购买成本。

内存或磁盘不足,word无法显示请求字体怎么办内存或磁盘不足,word无法显示请求字体怎么办Nov 06, 2022 am 10:47 AM

内存或磁盘不足,word无法显示请求字体的解决办法:1、打开Word,点击【剪切板】,然后点击【全部清空】;2、在【高级系统设置】中取消勾选“自动管理所有驱动器的分页文件大小”的选项,然后选中需要设置的磁盘盘符,输入合适的大小即可。

1tb是多少g内存1tb是多少g内存Nov 30, 2022 am 10:23 AM

1tb理论上是等于1024g;其中T是TB的缩写,G是GB的缩写,但是一般内存不会有1TB的,TB级别的是硬盘;TB表示太字节,是一种信息计量单位,现今通常在标示硬盘总容量、或具有大容量的储存介质之储存容量时使用。

4g内存win10够用吗4g内存win10够用吗Mar 15, 2023 pm 02:28 PM

不够用。虽然4G内存足够满足Windows 10系统的安装需求,但问题是不可能只在电脑里安装一个系统,还要安装其他应用,而这些应用也会占用一定的内存空间;先不考虑CPU、硬盘和显卡等配件是否能够满足需求,只单独说内存,假设用户安装的Windows 10系统占用了2G内存,但其他的辅助插件和应用可能还会占去2G内存,一旦内存被占满,必然会导致电脑出现卡顿、运行慢的情况。

8g内存只有3.98g可用怎么办8g内存只有3.98g可用怎么办Mar 09, 2023 pm 03:27 PM

8g内存只有3.98g可用的解决办法:1、按快捷键“WIN+R”,打开运行,并输入“msconfig”;2、进入“系统配置”窗口,选择“引导”,点击“高级选项”;3、勾选“最大内存”或者自行输入与所安装内存条对应的值即可。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能