Throttle compaction on temporary DB

This commit is contained in:
Andrey Smirnov
2017-02-23 01:01:17 +03:00
parent f2dc4eeec9
commit 4c06e26d85
2 changed files with 15 additions and 5 deletions

View File

@@ -51,18 +51,24 @@ var (
_ Storage = &levelDB{}
)
func internalOpen(path string) (*leveldb.DB, error) {
func internalOpen(path string, throttleCompaction bool) (*leveldb.DB, error) {
o := &opt.Options{
Filter: filter.NewBloomFilter(10),
OpenFilesCacheCapacity: 256,
}
if throttleCompaction {
o.CompactionL0Trigger = 32
o.WriteL0PauseTrigger = 96
o.WriteL0SlowdownTrigger = 64
}
return leveldb.OpenFile(path, o)
}
// OpenDB opens (creates) LevelDB database
func OpenDB(path string) (Storage, error) {
db, err := internalOpen(path)
db, err := internalOpen(path, false)
if err != nil {
return nil, err
}
@@ -94,7 +100,11 @@ func (l *levelDB) CreateTemporary() (Storage, error) {
return nil, err
}
return OpenDB(tempdir)
db, err := internalOpen(tempdir, true)
if err != nil {
return nil, err
}
return &levelDB{db: db, path: tempdir}, nil
}
// Get key value from database
@@ -212,7 +222,7 @@ func (l *levelDB) ReOpen() error {
}
var err error
l.db, err = internalOpen(l.path)
l.db, err = internalOpen(l.path, false)
return err
}

View File

@@ -50,7 +50,7 @@ func (index *ContentsIndex) Empty() bool {
// WriteTo dumps sorted mapping of files to qualified package names
func (index *ContentsIndex) WriteTo(w io.Writer) (int64, error) {
// For performance reasons push method wrote on key per path and package
// in this method we now need to merge all pkg with have the same path
// in this method we now need to merge all packages which have the same path
// and write it to contents index file
var n int64