github.com/cheng762/platon-go@v1.8.17-0.20190529111256-7deff2d7be26/ethdb/pposdatabase.go (about) 1 package ethdb 2 3 import ( 4 "github.com/PlatONnetwork/PlatON-Go/log" 5 "github.com/syndtr/goleveldb/leveldb" 6 "github.com/syndtr/goleveldb/leveldb/errors" 7 "github.com/syndtr/goleveldb/leveldb/filter" 8 "github.com/syndtr/goleveldb/leveldb/opt" 9 ) 10 11 12 func NewPPosDatabase (file string) (*LDBDatabase, error) { 13 14 15 logger := log.New("database", file) 16 17 logger.Info("Allocated cache and file handles") 18 19 // Open the db and recover any potential corruptions 20 db, err := leveldb.OpenFile(file, &opt.Options{ 21 22 // 100 block 45.1 M 45.2 M; 200 block 45.3 M 45.4 M 45.1 M 23 OpenFilesCacheCapacity: 1000, 24 BlockCacheCapacity: 500, 25 BlockSize: 1, 26 WriteBuffer: 64, 27 28 CompactionSourceLimitFactor: 1000, 29 Filter: filter.NewBloomFilter(10), 30 31 //Compression: opt.SnappyCompression, 32 33 /*// 100 block 65.9 M 88.1 M; 200 block 73.5 M 88.2 M 34 DisableBlockCache: true, 35 BlockRestartInterval: 5, 36 BlockSize: 80, 37 Compression: opt.NoCompression, 38 OpenFilesCacheCapacity: -1, 39 Strict: opt.StrictAll, 40 WriteBuffer: 1000, 41 CompactionTableSize: 2000, 42 Filter: filter.NewBloomFilter(10),*/ 43 44 /*// myself 100 block 42.9 M 45.7 45.8 M ; 200 block 45.8M 45.9 M 45 CompactionSourceLimitFactor: 1 * opt.MiB, 46 DisableLargeBatchTransaction: true, 47 CompactionTableSize: 1 * opt.MiB, 48 WriteBuffer: 10 * opt.MiB, 49 Strict: opt.StrictCompaction, 50 Filter: filter.NewBloomFilter(10),*/ 51 52 53 /*// ethdb config 100 block 356 M 615 M ; 200 block 586 54 OpenFilesCacheCapacity: 1024, 55 BlockCacheCapacity: 768 / 2 * opt.MiB, 56 WriteBuffer: 1024 / 4 * opt.MiB, // Two of these are used internally 57 Filter: filter.NewBloomFilter(10),*/ 58 }) 59 60 //db, err := leveldb.OpenFile(file,nil) 61 62 if _, corrupted := err.(*errors.ErrCorrupted); corrupted { 63 db, err = leveldb.RecoverFile(file, nil) 64 } 65 // (Re)check for errors and abort if opening of the db failed 66 if err != nil { 67 return nil, err 68 } 69 return &LDBDatabase{ 70 fn: file, 71 db: db, 72 log: logger, 73 }, nil 74 } 75 76