ignite-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Vladimir Ozerov (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (IGNITE-7015) SQL: Index should be updated only when relevant values changed
Date Thu, 14 Jun 2018 10:24:00 GMT

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

Vladimir Ozerov commented on IGNITE-7015:

[~npordash], this specific fix is not likely to be merged in the nearest time. In-place updates
are very complicated things and are not possible in general case. However, at this point we
understand that slow index updates are caused by inefficient index implementation, and we
are working on several tickets to improve it: 




> SQL: Index should be updated only when relevant values changed
> --------------------------------------------------------------
>                 Key: IGNITE-7015
>                 URL: https://issues.apache.org/jira/browse/IGNITE-7015
>             Project: Ignite
>          Issue Type: Task
>          Components: sql
>            Reporter: Vladimir Ozerov
>            Assignee: Roman Kondakov
>            Priority: Major
>              Labels: iep-19, performance
> See {{GridH2Table.update}} method. Whenever value is updated, we propagate it to all
indexes. Consider the following case:
> 1) Old row is not null, so this is "update", not "create".
> 2) Link hasn't changed
> 3) Indexed fields haven't changed
> If all conditions are met, we can skip index update completely, as state before and after
will be the same. This is especially important when persistence is enabled because currently
we generate unnecessary dirty pages what increases IO pressure.
> Suggested fix:
> 1) Iterate over index columns, skipping key and affinity columns (as they are guaranteed
to be the same);
> 2) Compare relevant index columns of both old and new rows
> 3) If all columns are equal, do nothing.
> Fields should be read through {{GridH2KeyValueRowOnheap#getValue}}, because in this case
we will re-use value cache transparently.

This message was sent by Atlassian JIRA

View raw message