Vladimir Ozerov created IGNITE-10985:
----------------------------------------
Summary: SQL: create low-overhead implementation of Row for SELECTs
Key: IGNITE-10985
URL: https://issues.apache.org/jira/browse/IGNITE-10985
Project: Ignite
Issue Type: Task
Components: sql
Reporter: Vladimir Ozerov
Assignee: Alexander Lapin
Fix For: 2.8
Currently we use {{GridH2KeyValueRowOnheap}} for both update and search
operations. This leads to *huge* memory overhead during {{SELECT}} execution.
If you take a closer look on what is inside the row, you will note the
following:
# It has both serialized and deserialized {{GridCacheVersion}} which is never
needed
# It has wrapped key and value object
# It has reference to {{CacheDataRow}} which is not needed either
# It has {{valCache}} field which is never used in SELECT
The goal of this ticket is to created optimized version of row which will be
created during {{SELECT}} operations only. It should contain only minimally
necessary information:
# Key (unwrapped!)
# Value (unwrapped!)
# Version (unwrapped, we will remove it completely in separate ticket)
It should not contain reference to {{CacheDataRow}}. There is a chance that we
will need some pieces from it (e.g. cache ID and link for caching purposes),
but it definitely will be only small subset of the whole
{{CacheDataRowAdapter}} (or even worse - {{MvccDataRow}}).
Entry point: {{H2Tree.createRowFromLink}} methods. Note that they return
{{GridH2Row}}, while in their usages only very relaxed version of
{{GridH2SearchRow}} is needed. So let's start with new implementation of row
for these methods and then gradually remove all unnecessary stuff from there.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)