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)