[ https://issues.apache.org/jira/browse/IGNITE-7015?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16504989#comment-16504989 ]
Nick Pordash commented on IGNITE-7015: -------------------------------------- [~vozerov] do you have a rough ETA when this might be released? The performance implications are so critical that I'm considering manually applying the PR to each release and rolling a custom build until then, which is obviously not a great situation to be in. For context, without this optimization in place I would need to have a cluster 3x-4x bigger just to absorb the excessive B+Tree updates. > 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 (v7.6.3#76005)