From 42c746d6f405deb0c49d868dcc6e0afe279e19ab Mon Sep 17 00:00:00 2001 From: Martin Holst Swende Date: Fri, 3 May 2019 12:55:36 +0200 Subject: [PATCH] freezer: disable compression on hashes and difficulties (#14) * freezer: disable compression on hashes and difficulties * core/rawdb: address review concerns * core/rawdb: address review concerns --- core/rawdb/freezer.go | 4 ++-- core/rawdb/freezer_table.go | 6 +++--- core/rawdb/schema.go | 10 ++++++++++ 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/core/rawdb/freezer.go b/core/rawdb/freezer.go index 84426d8ae9..21a6055cd4 100644 --- a/core/rawdb/freezer.go +++ b/core/rawdb/freezer.go @@ -89,8 +89,8 @@ func newFreezer(datadir string, namespace string) (*freezer, error) { tables: make(map[string]*freezerTable), instanceLock: lock, } - for _, name := range []string{freezerHashTable, freezerHeaderTable, freezerBodiesTable, freezerReceiptTable, freezerDifficultyTable} { - table, err := newTable(datadir, name, readMeter, writeMeter) + for name, disableSnappy := range freezerNoSnappy { + table, err := newTable(datadir, name, readMeter, writeMeter, disableSnappy) if err != nil { for _, table := range freezer.tables { table.Close() diff --git a/core/rawdb/freezer_table.go b/core/rawdb/freezer_table.go index 93636a5ba7..d46597f730 100644 --- a/core/rawdb/freezer_table.go +++ b/core/rawdb/freezer_table.go @@ -97,9 +97,9 @@ type freezerTable struct { lock sync.RWMutex // Mutex protecting the data file descriptors } -// newTable opens a freezer table with default settings - 2G files and snappy compression -func newTable(path string, name string, readMeter metrics.Meter, writeMeter metrics.Meter) (*freezerTable, error) { - return newCustomTable(path, name, readMeter, writeMeter, 2*1000*1000*1000, false) +// newTable opens a freezer table with default settings - 2G files +func newTable(path string, name string, readMeter metrics.Meter, writeMeter metrics.Meter, disableSnappy bool) (*freezerTable, error) { + return newCustomTable(path, name, readMeter, writeMeter, 2*1000*1000*1000, disableSnappy) } // newCustomTable opens a freezer table, creating the data and index files if they are diff --git a/core/rawdb/schema.go b/core/rawdb/schema.go index ebca172524..a44a2c99f9 100644 --- a/core/rawdb/schema.go +++ b/core/rawdb/schema.go @@ -80,6 +80,16 @@ const ( freezerDifficultyTable = "diffs" ) +// freezerNoSnappy configures whether compression is disabled for the ancient-tables. +// Hashes and difficulties don't compress well. +var freezerNoSnappy = map[string]bool{ + freezerHeaderTable: false, + freezerHashTable: true, + freezerBodiesTable: false, + freezerReceiptTable: false, + freezerDifficultyTable: true, +} + // LegacyTxLookupEntry is the legacy TxLookupEntry definition with some unnecessary // fields. type LegacyTxLookupEntry struct {