[ https://issues.apache.org/jira/browse/IGNITE-6983?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Taras Ledkov resolved IGNITE-6983. ---------------------------------- Resolution: Won't Fix The performance impact is not significant. > 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: iep-19, 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)