h2 web console使用

  在高并发情况下,in memory模式下h2的性能要远高于sqlite(单线程下,还是sqlite高很多),当前版本MVStore作为H2的默认存储引擎,无需参数控制。

  跟商业版xtremedb有的一比。https://blog.csdn.net/longlongago7777/article/details/11485893。

安装h2 windows版本

复制代码
C:\Program Files (x86)\H2\bin>java -cp h2-1.4.200.jar org.h2.tools.Shell

Welcome to H2 Shell 1.4.200 (2019-10-14)
Exit with Ctrl+C
[Enter]   jdbc:h2:~/test
URL       jdbc:h2:d:/test/h2db
[Enter]   org.h2.Driver
Driver
[Enter]
User      sa
Password
Type the same password again to confirm database creation.
Password
Connected
Commands are case insensitive; SQL statements end with ';'
help or ?      Display this help
list           Toggle result list / stack trace mode
maxwidth       Set maximum column width (default is 100)
autocommit     Enable or disable autocommit
history        Show the last 20 statements
quit or exit   Close the connection and exit
复制代码

 

 完整的SQL可以点击下列HELP:

 

总的来说,h2的bug还是挺多的、open状态的bug其实也不少,可以参见https://github.com/h2database/h2database/issues。

h2测试时,有一个比较高效的方法,即其他源生成csv文件,然后通过CSVREAD查询结果。通过CSVWRITE写到CSV文件。

call CSVWRITE('d:\\h2\\ta4.csv', 'select * from ta4', 'charset=UTF-8 fieldSeparator=| writeColumnHeader=false');
select * from csvread('d:\\h2\\ta4.csv', 'FUND_CODE|FUND_TYPE|REAL_SHARES_SUM|TOTAL_REAL_SHARES', 'charset=UTF-8 fieldSeparator=|');
create table tmp_ta4 as select * from csvread('d:\\h2\\ta4.csv', 'FUND_CODE|FUND_TYPE|REAL_SHARES_SUM|TOTAL_REAL_SHARES', 'charset=UTF-8 fieldSeparator=|');

 权限问题

org.h2.jdbc.JdbcSQLInvalidAuthorizationSpecException: Wrong user name or password [28000-232]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:522)
at org.h2.message.DbException.getJdbcSQLException(DbException.java:489)
at org.h2.message.DbException.get(DbException.java:223)

  虽然已经创建了用户sa。

  但是控制台方式能够连接。

 

  有时候h2会发生在create table时无法锁定sys表的情况,参见:https://stackoverflow.com/questions/26511508/timeout-trying-to-lock-table-sys。但是通过查看INFORMATION_SCHEMA,没有发现sys表,应该是一个内部表。如果是1.3版本,可以升级到1.4使用MVCC,如果是1.4,只能考虑增加DEFAULT_LOCK_TIME及LOCK_TIME。

  spring boot测试h2内存数据库https://www.baeldung.com/spring-boot-access-h2-database-multiple-apps。

  需要注意的是embbed模式不支持高可用。https://h2-database.narkive.com/DJnsQfE9/h2-left-outer-join-optimization、https://h2-database.narkive.com/8ZwmfxYB/h2-implementing-hash-join-algorithm-in-h2-database、https://github.com/h2database/h2database/issues/2081

h2 sql编译器采用的是递归下降解析算法(Recursive Descent Parsing),但是现在主流采用antlr和bison/flex等,这个实现有些过时,难以为继,不过h2是为了性能有意这么做的,https://github.com/h2database/h2database/issues/484这里有个专门的讨论,此外它直接生成了可执行命令而不是AST,所以理论上执行器的速度很快。

posted @   zhjh256  阅读(1419)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
历史上的今天:
2019-01-28 java.lang.IllegalArgumentException: An invalid domain [.test.com] was specified for this cookie解决方法
2018-01-28 在JDBC中使用Java8的日期LocalDate、LocalDateTime
点击右上角即可分享
微信分享提示