You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Vyacheslav Koptilin (Jira)" <ji...@apache.org> on 2022/04/27 12:23:00 UTC

[jira] [Updated] (IGNITE-16666) [Native Persistence 3.0] Optimize fragment storage for TableDataIo

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

Vyacheslav Koptilin updated IGNITE-16666:
-----------------------------------------
    Description: 
It is necessary to optimize the storage and reading of fragments for *TableDataIo*.

At the moment, the size of the data is: the size of the key array (4 bytes) + the key array + the size of the data array (4 bytes) + the value array.
It is proposed to optimize this and use only the key size (4 bytes) + key array + value array, and store the key size in the header, thereby not fragmenting it.
Also do key comparison across fragments instead of loading the entire key array from all fragments.

Required methods:
* *org.apache.ignite.internal.storage.pagememory.TableDataRowImpl#headerSize* - the size of the non-breaking header (4 bytes are needed);
* *org.apache.ignite.internal.storage.pagememory.TableDataRowImpl#size* - do not store the size of the value array;
* *org.apache.ignite.internal.storage.pagememory.io.TableDataIo#writeFragmentData* - writing fragments to pages;
* *org.apache.ignite.internal.storage.pagememory.TableTree#getRowByLink* - reading fragments;
* *org.apache.ignite.internal.storage.pagememory.PageMemoryPartitionStorageTest#testFragments*.

  was:
It is necessary to optimize the storage and reading of fragments for *TableDataIo*.

At the moment, the size of the data is: the size of the key array (4 bytes) + the key array + the size of the data array (4 bytes) + the value array.
It is proposed to optimize this and use only the key size (4 bytes) + key array + value array, and store the key size in the header, thereby not fragmenting it.

Also do key comparison across fragments instead of loading the entire key array from all fragments.

Required methods:
* *org.apache.ignite.internal.storage.pagememory.TableDataRowImpl#headerSize* - the size of the non-breaking header (4 bytes are needed);
* *org.apache.ignite.internal.storage.pagememory.TableDataRowImpl#size* - do not store the size of the value array;
* *org.apache.ignite.internal.storage.pagememory.io.TableDataIo#writeFragmentData* - writing fragments to pages;
* *org.apache.ignite.internal.storage.pagememory.TableTree#getRowByLink* - reading fragments;
* *org.apache.ignite.internal.storage.pagememory.PageMemoryPartitionStorageTest#testFragments*.


> [Native Persistence 3.0] Optimize fragment storage for TableDataIo
> ------------------------------------------------------------------
>
>                 Key: IGNITE-16666
>                 URL: https://issues.apache.org/jira/browse/IGNITE-16666
>             Project: Ignite
>          Issue Type: Task
>            Reporter: Kirill Tkalenko
>            Priority: Major
>              Labels: ignite-3
>             Fix For: 3.0.0-alpha5
>
>
> It is necessary to optimize the storage and reading of fragments for *TableDataIo*.
> At the moment, the size of the data is: the size of the key array (4 bytes) + the key array + the size of the data array (4 bytes) + the value array.
> It is proposed to optimize this and use only the key size (4 bytes) + key array + value array, and store the key size in the header, thereby not fragmenting it.
> Also do key comparison across fragments instead of loading the entire key array from all fragments.
> Required methods:
> * *org.apache.ignite.internal.storage.pagememory.TableDataRowImpl#headerSize* - the size of the non-breaking header (4 bytes are needed);
> * *org.apache.ignite.internal.storage.pagememory.TableDataRowImpl#size* - do not store the size of the value array;
> * *org.apache.ignite.internal.storage.pagememory.io.TableDataIo#writeFragmentData* - writing fragments to pages;
> * *org.apache.ignite.internal.storage.pagememory.TableTree#getRowByLink* - reading fragments;
> * *org.apache.ignite.internal.storage.pagememory.PageMemoryPartitionStorageTest#testFragments*.



--
This message was sent by Atlassian Jira
(v8.20.7#820007)