diff options
author | Xiang Li <xiangli.cs@gmail.com> | 2015-11-04 15:12:18 -0800 |
---|---|---|
committer | Xiang Li <xiangli.cs@gmail.com> | 2015-11-06 09:39:17 -0800 |
commit | e67705ed6348675b7bae405ebeb37bb69b53a96d (patch) | |
tree | 896094dfe1466aa5a017424ee19a434dbf9f35cb /db_test.go | |
parent | Merge pull request #428 from lukechampine/patch-1 (diff) | |
download | dedo-e67705ed6348675b7bae405ebeb37bb69b53a96d.tar.gz dedo-e67705ed6348675b7bae405ebeb37bb69b53a96d.tar.xz |
do not grow dbsize agressively
Only grow the database size when the high watermark increases.
We also grows the database size a little bit aggressively to
save a few ftruncates.
I have tested this on various environments. The performance impact
is ignorable with 16MB over allocation. Without over allocation,
the performance might decrease 100% when each Tx.Commit needs a new
page on a very slow disk (seek time dominates the total write).
Diffstat (limited to 'db_test.go')
-rw-r--r-- | db_test.go | 10 |
1 files changed, 8 insertions, 2 deletions
@@ -100,6 +100,8 @@ func TestOpen_Size(t *testing.T) { path := db.Path() defer db.Close() + pagesize := db.Info().PageSize + // Insert until we get above the minimum 4MB size. ok(t, db.Update(func(tx *bolt.Tx) error { b, _ := tx.CreateBucketIfNotExists([]byte("data")) @@ -127,7 +129,8 @@ func TestOpen_Size(t *testing.T) { } // Compare the original size with the new size. - if sz != newSz { + // db size might increase by a few page sizes due to the new small update. + if sz < newSz-5*int64(pagesize) { t.Fatalf("unexpected file growth: %d => %d", sz, newSz) } } @@ -144,6 +147,8 @@ func TestOpen_Size_Large(t *testing.T) { path := db.Path() defer db.Close() + pagesize := db.Info().PageSize + // Insert until we get above the minimum 4MB size. var index uint64 for i := 0; i < 10000; i++ { @@ -177,7 +182,8 @@ func TestOpen_Size_Large(t *testing.T) { } // Compare the original size with the new size. - if sz != newSz { + // db size might increase by a few page sizes due to the new small update. + if sz < newSz-5*int64(pagesize) { t.Fatalf("unexpected file growth: %d => %d", sz, newSz) } } |