This can be desirable if data in multiple column families must be consistent with each other. For example, imagine there is one metadata column family meta_cf, and a data column family . Every time we write a new record to data_cf, we also write its metadata to meta_cf. and data_cf must be flushed atomically. Database becomes inconsistent if one of them is persisted but the other is not. Atomic flush provides a good guarantee. Suppose at a certain time, kv1 exists in the memtables of meta_cf and kv2 exists in the memtables of . After atomically flushing these two column families, both kv1 and kv2 are persistent if the flush succeeds. Otherwise neither of them exist in the database.

    It's easy to enable/disable atomic flush as a DB option.To open the DB with atomic flush enabled,

      In the case automatic flushes triggered internally by RocksDB, we currently flush all column families in the database for simplicity.