设置存储引擎
在1.4以前h2使用的存储引擎是pageStore,现在还保留在org.h2.pagestore下。要想使用旧存储引擎PageStore可以在jdbc链接后面设置:
| 1 | jdbc:h2:~/test;MV_STORE=false | 
则会使用旧的存储引擎,默认是true,即使用mvStore。存储引擎初始化过程:
| 1 | //DataBase.java | 
MVStore初始化
| 1 | public static Store init(final Database db) { | 
首先创建MVStore.Builder对象,利用MVStore.Builder对象创建MVStore,MVStore.Builder可配置的参数:
- autoCommitBufferSize
- autoCompactFillRate
- backgroundExceptionHandler
- cacheSize
- compress (LZF和Deflate)
- encryptionKey
- fileName
- fileStore
- pageSplitSize
- readOnly
表与存储引擎的关系
一个数据库对应:
- 一个MVStore实例
- 一个TransactionStore实例
- 一个preparedTransactions MVMap
- 一个undoLog MVMap
| 1 | MVStore(Map<String, Object> config) { | 
MVStore 初始化了7个MVMap,新建一个表对底层存储引擎来说其实就是新建一个MVMap,然后往这个MVMap插入Page,最终数据落到硬盘里的*.db文件里。
- meta 
 id:0
 name:meta
- openTransactions 
 id:1
 name: openTransactions
- undoLog.1 
 id:2
 name:undoLog.1
- table.0 
 id:3
 name:table.0
- lobMap 
 id:4
 name:lobMap
- lobRef 
 id:5
 name:lobRef
- lobData 
 id:6
 name:lobData
