[ 
https://issues.apache.org/jira/browse/HBASE-1213?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12707088#action_12707088
 ] 

stack commented on HBASE-1213:
------------------------------

This is about carrying batches deeper down into the Region.  We'd then get lock 
on HLog, run a batch, let the HLog lock go and then apply the commit logged 
edits across Stores.

This is going to become even more critical as HLog becomes more expensive when 
flush/sync actually starts working.

Currently, edits go in a row at a time.  The commit log and the commit to 
memcache are both done within the row lock.  We'd break this batching HLog 
writes.  Would make it so commit log had edits not yet added to memcache.  This 
is probably OK.

Of note, if a row has many edits to apply -- the BatchUpdate touches many 
columns -- these are applied as a batch to HLog and then to the memcache.

If we could presume the array of incoming edits already sorted by region, then 
we could pass sub-arrays down to Regions -- no need to sort first or repackage 
in a new array or List.

We'd need a new batchUpdate method in HRegion, one that took sub-arrays of 
Region edits.  It'd pass the edits to the HLog first, then one by one, call 
current batchUpdate only with writeToWAL set to false.



> Investigate Locking & Contention in the Write Path
> --------------------------------------------------
>
>                 Key: HBASE-1213
>                 URL: https://issues.apache.org/jira/browse/HBASE-1213
>             Project: Hadoop HBase
>          Issue Type: Improvement
>    Affects Versions: 0.19.0
>            Reporter: Ben Maurer
>            Assignee: stack
>             Fix For: 0.20.0
>
>
> When doing a large number of bulk updates from different clients, I noticed 
> that there was a high level of lock contention for stuff like locking the 
> HLog. It seems that each thread acquires the lock for a single BatchUpdate, 
> releases the lock then another thread owns the lock before the initial writer 
> gets to the next update. Having the threads bounce around may lead to 
> suboptimal performance.
> Should be benchmarked & maybe changed to have less context switching.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to