[ 
https://issues.apache.org/jira/browse/IGNITE-21999?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ivan Bessonov reassigned IGNITE-21999:
--------------------------------------

    Assignee: Ivan Bessonov

> 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
>            Assignee: Ivan Bessonov
>            Priority: Major
>              Labels: ignite-3
>
> 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