设置存储引擎
在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:metaopenTransactions
id:1
name: openTransactionsundoLog.1
id:2
name:undoLog.1table.0
id:3
name:table.0lobMap
id:4
name:lobMaplobRef
id:5
name:lobReflobData
id:6
name:lobData