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

Joel Lang commented on IGNITE-8385:
-----------------------------------

I did not realize there were situations where the actual indexed value would 
not be stored in the index itself. This might explain a great deal of the 
performance issue I had when using random UUID string indexes with a HDD. While 
the string contains a UUID that is not an actual requirement, so I can't change 
the data type to use the java UUID class, yet.

After looking through the code I see CacheConfiguration has the max inline size 
option that I'm going to try raising to 36 to fit a complete UUID string.

> SQL: Allow variable-length values in index leafs
> ------------------------------------------------
>
>                 Key: IGNITE-8385
>                 URL: https://issues.apache.org/jira/browse/IGNITE-8385
>             Project: Ignite
>          Issue Type: Task
>          Components: sql
>    Affects Versions: 2.4
>            Reporter: Vladimir Ozerov
>            Priority: Major
>              Labels: iep-19, performance
>             Fix For: 2.6
>
>
> Currently we have a restriction that every entry inside a BTree leaf should 
> be of fixed size. This restriction is artificial and prevents efficient index 
> usage because we have to choose so-called {{inline size}} for every index 
> manually. This is OK for fixed-size numeric types. But this could be a 
> problem for varlen types such as {{VARCHAR}} because in some cases we cannot 
> fit the whole value and have to fallback to data page lookup. In other cases 
> we may pick too pessimistic inline size value and index space would be 
> wasted. 
> What we need to do is to allow arbitrary item size in index pages. In this 
> case we would be able to inline all necessary values into index pages in most 
> cases. 
> Please pay attention that we may still met page overflow in case too long 
> data types are used. To mitigate this we should:
> 1) Implement IGNITE-6055 first so that we can distinguish between limited and 
> unlimited data types.
> 2) Unlimited data types should be inlined only partially
> 3) We need to have special handling for too long rows (probably just re-use 
> existing logic with minimal adjustments)



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

Reply via email to