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

Denis Chudov updated IGNITE-18767:
----------------------------------
    Description: 
*Motivation*
New RowId is generated every time when row insert happens. Old rowIds point to 
tombstones and are cleared only on vacuum. This leads to the garbage 
stockpiling in index storages and version chains, necessity for scanning 
multiple rows even for unique indexes and possibility of having multiple write 
intents for single key within one transaction. We can reuse tombstone rows for 
inserts.

*Definition of done*
New rowIds are generated only for new rows when there are no tombstones to 
reuse.

*Implementation notes*
For tx rollbacks, we should also remove index entries for write intents that 
are to be aborted, but only in case when version chain's tail is write intent 
(i.e. in case of abortion of this write intent there will be no entry in 
versioned storage on which the index entry could point).

  was:
*Motivation*
New RowId is generated every time when row insert happens. Old rowIds point to 
tombstones and are cleared only on vacuum. This leads to the garbage 
stockpiling in index storages and version chains, necessity for scanning 
multiple rows even for unique indexes and possibility of having multiple write 
intents for single key within one transaction. We can reuse tombstone rows for 
inserts.

*Definition of done*
New rowIds are generated only for new rows when there are now tombstones to 
reuse.

*Implementation notes*
For tx rollbacks, we should also remove index entries for write intents that 
are to be aborted, but only in case when version chain's tail is write intent 
(i.e. in case of abortion of this write intent there will be no entry in 
versioned storage on which the index entry could point).


> Reuse deleted rowIds and version chains
> ---------------------------------------
>
>                 Key: IGNITE-18767
>                 URL: https://issues.apache.org/jira/browse/IGNITE-18767
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Denis Chudov
>            Assignee: Alexander Lapin
>            Priority: Major
>              Labels: ignite-3
>
> *Motivation*
> New RowId is generated every time when row insert happens. Old rowIds point 
> to tombstones and are cleared only on vacuum. This leads to the garbage 
> stockpiling in index storages and version chains, necessity for scanning 
> multiple rows even for unique indexes and possibility of having multiple 
> write intents for single key within one transaction. We can reuse tombstone 
> rows for inserts.
> *Definition of done*
> New rowIds are generated only for new rows when there are no tombstones to 
> reuse.
> *Implementation notes*
> For tx rollbacks, we should also remove index entries for write intents that 
> are to be aborted, but only in case when version chain's tail is write intent 
> (i.e. in case of abortion of this write intent there will be no entry in 
> versioned storage on which the index entry could point).



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

Reply via email to