Skip to content

Commit

Permalink
add rocksdb vs leveldb
Browse files Browse the repository at this point in the history
  • Loading branch information
shydesky committed Apr 8, 2019
1 parent fec6585 commit 206855b
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 4 deletions.
55 changes: 55 additions & 0 deletions TRX_CN/Rocksdb_vs_Leveldb.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
1、数据库引擎参数调优。


| 对比项 | leveldb | rocksdb |
| ------ | ------ | ------|
|阶段 |编译阶段,参数设定好之后不能修改| 运行阶段,参数可以随时修改
|参数数量 |较少| 更多
调优难度 |缺少日志,分析起来繁琐 |日志丰富,便于查找性能瓶颈


下面列举了java-tron中使用rocksdb引擎支持的数据库调优参数,针对不同的区块处理阶段进行优化。

同步模式阶段

| 机器配置 | level_number | compactThreads | level0FileNumCompactionTrigger | block size | block size | level 1大小 | level multiplier | target File Multiplier | 说明 |
| ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------| ------ |
|16核32G内存| 7 | 16| 4 |64k| 256MB| 256MB| 10| 1| 此时区块数据集中写入,调高compactThreads和level0FileNumCompactionTrigger的值有利于数据写入更快。|
|8核16G内存 | 7 | 8 |4| 64k| 256MB| 256MB| 10| 1| 此时区块数据集中写入,调高compactThreads和level0FileNumCompactionTrigger的值有利于数据写入更快。|


广播模式阶段

| 机器配置 | level_number | compactThreads | level0FileNumCompactionTrigger | block size | block size | level 1大小 | level multiplier | target File Multiplier | 说明 |
| ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------| ------ |
|16核32G内存| 7| 8| 2| 64k| 256MB| 256MB| 10| 1| 此时更多的是数据读取,调降compactThreads和level0FileNumCompactionTrigger的值有利于提高数据读取效率。|
|8核16G内存| 7| 4| 2| 64k| 256MB| 256MB| 10| 1| 此时更多的是数据读取,调降compactThreads和level0FileNumCompactionTrigger的值有利于提高数据读取效率。|


注:以上为我们给出的建议优化参数,可参考rocksdb运行时记录的日志对不同配置的机器进行相应的参数优化。

2、rocksdb数据库单个sst文件存储的数据更多,占用磁盘的总空间更少。

|数据库文件大小| leveldb sst文件数量| rocksdb sst文件数量|
|-----|-----|-----|
|8.8G| 3023个| 968个|

|同一区块高度数据库|leveldb| rocksdb|
|-----|-----|-----|
|7930000区块| 142G |126G|
3、对于数据备份的支持。

leveldb不支持运行时的数据备份。

rocksdb支持在运行时进行数据备份,备份的时间仅需要几秒钟。

|区块高度| 数据库大小| 备份时间
|-----|-----|-----|
|4900000| 27G |1秒|
|7900000| 126G| 1.4秒|


rocksdb提供丰富了配置参数允许节点根据自身机器配置进行调优,节点数据库占用的磁盘空间相比于leveldb更少,在程序运行时备份上百G数据只需要几秒而且不需要节点停止运行。



10 changes: 6 additions & 4 deletions TRX_CN/Tron-doc.md
Original file line number Diff line number Diff line change
Expand Up @@ -287,16 +287,18 @@ Tron网络采用Peer-to-Peer(P2P)的网络架构,网络中的节点地位对
```text
java -jar build/libs/DBConvert.jar src_db_path dst_db_path
```
<br>
必须停止节点的运行,然后再运行数据转换脚本。
如果不希望节点停止时间太长,可以在节点停止后先将leveldb数据目录output-directory拷贝一份到新的目录下,然后恢复节点的运行。然后在新目录的上级目录中执行DBConvert.jar并指定`src_db_path``dst_db_path` 参数。
如果不希望节点停止时间太长,可以在节点停止后先将leveldb数据目录output-directory拷贝一份到新的目录下,然后恢复节点的运行。
<br>
在新目录的上级目录中执行DBConvert.jar并指定参数`src_db_path``dst_db_path`
例如:

```text
cp -rf output-directory /tmp/output-directory
cd /tmp
java -jar DBConvert.jar output-directory output-directory-dst
java -jar DBConvert.jar output-directory/database output-directory-dst/database
```
#### 4.7.1.4 为何使用RocksDB

# 5 智能合约
## 5.1 Tron智能合约介绍

Expand Down

0 comments on commit 206855b

Please sign in to comment.