[ https://issues.apache.org/jira/browse/IGNITE-6409?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Vladimir Ozerov resolved IGNITE-6409. ------------------------------------- Resolution: Fixed Not relevant at the moment. > SQL: bypass H2 during index update > ---------------------------------- > > Key: IGNITE-6409 > URL: https://issues.apache.org/jira/browse/IGNITE-6409 > Project: Ignite > Issue Type: Task > Components: persistence, sql > Affects Versions: 2.1 > Reporter: Vladimir Ozerov > Priority: Major > Labels: performance > > Currently the only way to update standard user index is through H2 > infrastructure. See {{GridH2IndexBase#put}} and it's usages. For every update > we have to construct a kind of H2 row which will be passed to index. This > operation might require unnecessary memory copying and deserializations. We > should try to find a way to bypass H2 stuff altogether and add data to > underlying {{BPlusTree}} directly. > Here is how this could be achieved: > 1) Actual tree is {{H2Tree}}. It is accompanied by several helper classes > ({{InlineIndexHelper}}, {{H2*IO}}). > 2) We should remove all H2 stuff from there, and start using {{CacheDataRow}} > instead of {{SearchRow}} > 3) Refactored classes should be moved to core module. > 4) Conversion to {{SearchRow}} should happen inside {{H2TreeIndex}} only when > it is really needed. > 5) Two operations {{putNative}} and {{getNative}} should be added to > {{GridH2IndexBase}}. They should accept normal key-value objects instead of > H2 rows. > 6) Finally, all index index update routines (cache put/get, {{CREATE INDEX}}) > should be moved to {{putNative}}/{{getNative}} methods. > Note that IO classes should be reworked carefully to maintain backward > compatibility. -- This message was sent by Atlassian JIRA (v7.6.3#76005)