Ivan Bessonov created IGNITE-18033:
--------------------------------------

             Summary: Implement cooperative GC of MV data during RAFT commands 
execution
                 Key: IGNITE-18033
                 URL: https://issues.apache.org/jira/browse/IGNITE-18033
             Project: Ignite
          Issue Type: Improvement
            Reporter: Ivan Bessonov


Please refer to the Epic for the basic description. Please also refer to 
IGNITE-18031 for naive implementation details and general thoughts.

Technically, there is a possibility that the background GC process wouldn't 
catch up if there's too much data being loaded into the system. Scanning 
through the entire partition takes time, and only a small subset of data could 
be under a constant stream of modification.

To account for that, each update can be preceded with the manual GC of that 
row. In this case, there's less work for the background processor, and there's 
an empirical sense that frequently updated data will be just as frequently 
vacuumed, thus not allowing too much garbage to appear in the first place.

Now that's not a guarantee that there would be no problems at all, so we should 
also think about other ways of cooperative GC.

Of course, it would be nice to have a queue of "old" rows ready for you to 
clean. How feasible is it? It would have to be supported by every engine. 
That's extra data and extra time for management. Looks pretty much exactly like 
a TTL manager in Ignite 2.x. I assume that we don't implement anything like 
that right now, starting with more naive approaches. 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to