db_bench has flush, compact0 and compact1 commands to request flushing the memtable, compacting from L0->L1 and from L1->L2. It also has waitforcompaction to wait for compaction to finish.
MyRocks has similar commands where the SQL interface is to set a global variable:
set global rocksdb_force_flush_memtable_now=1
set global rocksdb_force_flush_memtable_and_lzero_now=1;
There are problems and I prefer that these be implemented within RocksDB:
- MyRocks has a race in rocksdb_force_flush_memtable_and_lzero_now, see here.
- waitforcompaction in db_bench works for leveled but has intermittent hangs for universal
- some of the db_bench commands have had bugs -- I know because I am the author of those bugs