[
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)