[ 
https://issues.apache.org/jira/browse/IGNITE-11089?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16752256#comment-16752256
 ] 

Alexey Goncharuk commented on IGNITE-11089:
-------------------------------------------

This is a good idea. I think to properly separate the inter-partition and 
cross-partition links, we should rework {{PageIO}}s of the BPlusTree a bit. For 
partition-only trees we will change inner and leaf page IOs to omit the 
partition ID. For SQL index trees old page IOs will remain the same.

> Get rid of partition ID in intra-partition page links stored in delta records
> -----------------------------------------------------------------------------
>
>                 Key: IGNITE-11089
>                 URL: https://issues.apache.org/jira/browse/IGNITE-11089
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Ivan Rakov
>            Priority: Major
>             Fix For: 2.8
>
>
> We had faced numerous bugs when pages that were initially allocated in 
> partition X migrated to partition Y (example: IGNITE-8659). Such migration 
> may cause storage corruption: if partition Y gets evicted, attempt to 
> dereference link to migrated page will cause error.
> We may prevent such situations in general and gain a few percent performance 
> boost at the same time:
> 1) Locate all links to pages in delta records, including self-links 
> (examples: InitNewPageRecord#newPageId, PagesListSetNextRecord#nextPageId, 
> MergeRecord#rightId).
> 2) Change storing format for such links: save only 6 bytes instead of 8 
> (without partition ID).
> 3) In every delta record constructor, assert that link's partition ID is 
> equal to PageDeltaRecord#pageId. Exception is pages from index partition: 
> they may refer to pages from other partitions by design.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to