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] [Assigned] (IGNITE-6983) SQL: optimize CREATE INDEX and BPlusTree interaction
Date Wed, 25 Apr 2018 12:20:00 GMT

     [ https://issues.apache.org/jira/browse/IGNITE-6983?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Vladimir Ozerov reassigned IGNITE-6983:
---------------------------------------

    Assignee: Taras Ledkov

> SQL: optimize CREATE INDEX and BPlusTree interaction
> ----------------------------------------------------
>
>                 Key: IGNITE-6983
>                 URL: https://issues.apache.org/jira/browse/IGNITE-6983
>             Project: Ignite
>          Issue Type: Task
>          Components: cache, sql
>            Reporter: Vladimir Ozerov
>            Assignee: Taras Ledkov
>            Priority: Major
>              Labels: performance
>
> Currently index is built as follows:
> 1) Get next entry from partition's tree
> 2) Read it's key (copy to heap)
> 3) Acquire lock on {{GridCacheMapEntry}}
> 4) Lookup the same key in the tree from the top
> 5) Read it's value (copy to heap)
> 6) Add to index.
> This is very complex flow. We can optimize two things - tree lookup and value deserialization
as follows:
> 1) Every data page will have update counter, which is incremented every time anything
is changed.
> 2) When lock on {{GridCacheMapEntry}} is acquired, we will acquire lock on the data page
and re-check update counter. 
> 3) If page was changed between iterator read and lock acquisition then use old flow.

> 4) Otherwise - set read lock on the page, read value as *offheap* object, apply it to
index.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Mime
View raw message