diff --git a/core/rawdb/freezer.go b/core/rawdb/freezer.go
index 84426d8ae9719f726827ad8b1e0fc40fd78ce8ce..21a6055cd4f8ccf98f089904e6de36f7c968c1f7 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 93636a5ba7b4ccecabab798e23576edb366bdd68..d46597f73053eba085450b83b260ec54690632c0 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 ebca172524bbd31062b4fdb66184c01bfc01a655..a44a2c99f94fcad18eba220d96c2fd2655f0a736 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 {