Did I understand correctly (about transaction logs & columnstore files)?

Mostly correct, yep.

For transaction logs:
3) applies to version 7.0 and higher and for reference databases we create smaller log files by default (64 mb). Both of those are controllable by global variables log_file_size_partitions and log_file_size_ref_dbs.

For columnstore files:
2) the rowstore segment is stored like a normal rowstore table (its data is logged to the transaction log and the rows are held in-memory). Once enough rows are stored in the rowstore segment in-memory the data is converted to columnstore format and written to disk (and removed from the rowstore segment) by the background flusher.
4) The INSERT/LOAD/UPDATE query will create the files in columnstore format directly themselves if they’re writing enough data (at each partition). If they are writing small amounts of data, they will go through the process described at 2) (accumulate in-memory until we have enough rows to write out to disk in columnstore format). The background merger doesn’t play a role in the initial writes of new rows. Its mainly responsible for keeping the data sorted and for cleaning up deleted rows. Some more details here: SingleStoreDB Cloud · SingleStore Documentation

1 Like