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

ZhangYao commented on KUDU-749:
-------------------------------

Hi, Todd:). In order to accelerate the time spending on 
DeltaMemStore::CheckRowDeleted, I wonder why we don't use the same sturct as 
MemRowSet. MemRowSet use row_key + mutationlist as B+ tree leftnode but 
DeltaMemStore use ((row_idx + timestamp) + changelist) as leftnode.
So if a lot of updates access DMS the B+ tree will be very large, and the 
traverse in CheckRowDeleted will cost a lot of time. If we use the same 
structure as MRS, we can use mutation head and mutation tail to record the 
updates of the same key. At the same time, the struct of redo file and undo 
file can keep intact. Then it will not only accelerate the CheckRowDeleted but 
also the updates on DMS. Do you have any advice? If you agree with this I can 
do POC at first to get the performance.

> Improve performance for zipfian update
> --------------------------------------
>
>                 Key: KUDU-749
>                 URL: https://issues.apache.org/jira/browse/KUDU-749
>             Project: Kudu
>          Issue Type: Improvement
>          Components: perf, tablet
>    Affects Versions: Private Beta
>            Reporter: Todd Lipcon
>            Priority: Major
>         Attachments: screenshot-1.png, screenshot-2.png
>
>
> A zipfian 50/50 update/read workload on YCSB gets slower and slower until 
> it's pretty intolerable (random reads taking 100+ms of CPU). It seems like 
> all the CPU is spent in DMSIterator::PrepareBatch. We're probably doing 
> something dumb here - let's look for some low hanging fruit to fix this.



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

Reply via email to