[ 
https://issues.apache.org/jira/browse/OAK-6867?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16281519#comment-16281519
 ] 

Thomas Mueller commented on OAK-6867:
-------------------------------------

Two options that won't work (in my view):
* If we use "option(index name uuid)", then we can't slowly switch the uuid 
index to another index type (eg. Lucene) any longer. Slowly switching means 
first create a second index "uuidLucene", then once it's ready set "disabled" 
to true in the uuid index. So, hardcoding index names isn't a good idea.
* If we use "option(index tag uuid)", then we require that all uuid indexes 
(/oak:index/uuid, /oak:index/uuidLucene once we have that) have the property 
"tags" set to ["uuid"]. We could add that flag at repository startup to the 
uuid index. However, if this doesn't work for some reason (eg. the repository 
is read-only), or happens slightly too late (possibly a race condition), then 
the query would fail. So I consider this risky that late in the release cycle.


> Enable index hints on UUID lookup query
> ---------------------------------------
>
>                 Key: OAK-6867
>                 URL: https://issues.apache.org/jira/browse/OAK-6867
>             Project: Jackrabbit Oak
>          Issue Type: Improvement
>          Components: query
>            Reporter: Alex Deparvu
>            Assignee: Thomas Mueller
>             Fix For: 1.8
>
>
> For the UUID lookup query I enabled the (recently added) query hints support 
> where you can specify the index you want to be used and I got an interesting 
> speedup in the benchmarks:
> {noformat}
> Hint disabled, lookup by query
> # UUIDLookupTest                   C     min     10%     50%     90%     max  
>      N 
> No of indexes (60) 60, Lookup by (lookupByQuery)[query] 
> Oak-Segment-Tar                    1       5       5       6       7      27  
>   9837
> Hint enabled, lookup by query
> # UUIDLookupTest                   C     min     10%     50%     90%     max  
>      N 
> No of indexes (60) 60, Lookup by (lookupByQuery)[query] 
> Oak-Segment-Tar                    1       5       5       6       7      13  
>  10128
> Hint enabled, lookup by getNode
> # UUIDLookupTest                   C     min     10%     50%     90%     max  
>      N 
> No of indexes (60) 60, Lookup by (lookupByQuery)[Session#getNodeByIdentifier] 
> Oak-Segment-Tar                    1       5       6       6       7      13  
>   9447
> Hint disabled, lookup by getNode
> # UUIDLookupTest                   C     min     10%     50%     90%     max  
>      N 
> No of indexes (60) 60, Lookup by (lookupByQuery)[Session#getNodeByIdentifier] 
> Oak-Segment-Tar                    1       3       3       3       4       8  
>  17504
> {noformat}
> It seems the cost shortcut is reducing the overall time, but cannot say for 
> sure where this change comes from.
> The only change I did was to add {{option(index name uuid)}} to this query [0]
> [~tmueller], [~chetanm] what do you think?
> [0] 
> https://github.com/apache/jackrabbit-oak/blob/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/identifier/IdentifierManager.java#L356



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to