Ivan Bessonov created IGNITE-21999:
--------------------------------------

             Summary: Merge partition free-lists into one
                 Key: IGNITE-21999
                 URL: https://issues.apache.org/jira/browse/IGNITE-21999
             Project: Ignite
          Issue Type: Improvement
            Reporter: Ivan Bessonov


Current implementation has 2 free-lists:
 * version chains
 * index tuples

These lists have separate buckets for different types of data pages. There's an 
issue with this approach:
 * overhead on pages - we have to allocate more pages to store buckets
 * overhead on checkpoints - we have to save twice as many free-lists on every 
checkpoint

The reason, to my understanding, is the fact that FreeList class is 
parameterized with the specific type of data that it stores. It makes no sense 
to me, to be completely honest, because the algorithm is always the same, and 
we always use the code from abstract free-list implementation.

What I propose:
 * get rid of abstract implementation and only have the concrete implementation 
of free lists
 * same for data pages
 * serialization code will be fully moved to implementations of Storeable

We're losing some guarantees if we do this change - we can no longer check that 
type of the page is correct. My response to this issue is that every Storeable 
could add a 1-byte header to the data, in order to validate it when being read, 
that should be enough. If we could find a way to store less than 1 byte then 
that's nice, I didn't look too much into the question.



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

Reply via email to