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

Vladimir Rodionov commented on HBASE-11965:
-------------------------------------------

Yes and no. First of all, this is not the only synchronization point in 
RegionScannerImpl. It has synchronized block in constructor. Second of all, 
acquiring/releasing read lock is not free, of course. Third of all, combination 
of *startRegionOperation*/*closeRegionOperation* is heavy not only because of 
locking - there are at least two objects instantiated *new RegionOperation()*. 
Multi-treaded object allocation in Java is still a hot research area.

And last one... All mutations on a region will be blocked until last read lock 
released. Bad.  




> Optimize locking in HRegion
> ---------------------------
>
>                 Key: HBASE-11965
>                 URL: https://issues.apache.org/jira/browse/HBASE-11965
>             Project: HBase
>          Issue Type: Bug
>          Components: Performance
>            Reporter: Vladimir Rodionov
>            Assignee: Vladimir Rodionov
>
> Described in this thread:
> http://mail-archives.apache.org/mod_mbox/hbase-dev/201409.mbox/%3CCAAg3a2qmWJtQbdAk7PrX%2BW8SZWxsYhNggM5f2RNkGTXUri34YQ%40mail.gmail.com%3E
> *startRegionOperation* and *closeRegionOperation* in HRegion acquires and 
> releases region-wide lock. The locking happens for every mutation, read and 
> scan next. This is a serious bottleneck if we do:
> * Mutli - get on a same region.
> * Run multiple scanners on same region.
> * Do scan during compaction.
> * Access region simultaneously from different threads (most generic case)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to