Andrew Wong created KUDU-3256: --------------------------------- Summary: Limit the memory usage per transaction per tablet Key: KUDU-3256 URL: https://issues.apache.org/jira/browse/KUDU-3256 Project: Kudu Issue Type: Improvement Components: transactions Reporter: Andrew Wong
Currently, the transactions implementation stores all new inserts in a new MRS per transaction per tablet. As transactions get larger and larger, or as there are more transactions entering the system, this will result in memory pressure across tablet servers. We should explore ways to limit the memory usage per transaction, by either enforcing a memory limit per transaction participant, or by flushing transactional MRSs before committing, per regular maintenance op cadence (e.g. based on memory pressure, MRS size, time since last flush, etc.). While it'd be significantly more complex, I'm more partial to the latter approach – the mechanics to flush an MRS already exist, so why not use them? It should be noted though that we would then need to update how bootstrapping is handled by persisting a 'last_flushed_mrs_id' per transaction, similar to what's done today for non-transactional MRSs. Additionally, the existing code to swap in new disk rowsets atomically would need some thought to ensure swapping in transactional rowsets while racing with a commit does the right thing (i.e. if we flush the transactional MRS while committing, the end result is the new DRSs should end up in the main rowset tree). -- This message was sent by Atlassian Jira (v8.3.4#803005)