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