go-ethereum/ethdb
rjl493456442 08a03c7761
ethdb/pebble: adjust the number of memory tables (#31970)
This pull request adjusts the number of allowed memory tables in Pebble.

Pebble allows configuring an arbitrary number of memory tables to hold 
unflushed data. When the current memtable becomes full, it is scheduled 
for flushing, and a new memtable is allocated to accept subsequent
writes. However, if too many memtables accumulate and are waiting to be 
flushed, subsequent writes will stall.

Originally, only two memtables were configured, each with a size of 512
MB for Ethereum mainnet. While this setup works well under normal
conditions, it becomes problematic under heavy write loads. In such scenarios,
flushing is only triggered when more than 512 MB of data is pending, which may
not be responsive enough. Even worse, if compactions are running
concurrently, flushing memtables can become slow due to the heavy IO 
overhead, leading to write stalls across the system.

This pull request tries to mitigate the performance degradation by having 
more memory tables but with a smaller size. In this case, the pending
writes can be flushed more smoothly and responsively.
2025-06-09 18:01:38 +08:00
..
dbtest ethdb: add DeleteRange feature (#30668) 2024-10-25 17:33:46 +02:00
leveldb core, ethdb: introduce database sync function (#31703) 2025-05-08 19:10:26 +08:00
memorydb core, ethdb: introduce database sync function (#31703) 2025-05-08 19:10:26 +08:00
pebble ethdb/pebble: adjust the number of memory tables (#31970) 2025-06-09 18:01:38 +08:00
remotedb core/rawdb: integrate eradb backend for RPC (#31604) 2025-06-03 10:47:38 +02:00
batch.go core, ethdb, tests, trie: implement NewBatchWithSize API for batcher (#24392) 2022-02-15 15:15:13 +02:00
database.go core/rawdb: integrate eradb backend for RPC (#31604) 2025-06-03 10:47:38 +02:00
iterator.go all: simplify and fix database iteration with prefix/start (#20808) 2020-04-15 14:08:53 +03:00