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

stack commented on HBASE-14460:
-------------------------------

[~eclark] Are you talking about a Put and Increment going against same Cell in 
your scenario; if so, yes, they will mess each other up.

This issue is about fixing Increment in branch-1 first. The patch will come 
with a constraint: i.e. you can only use the Increment codepath making 
Increments. This is a change in behavior but what is there currently is broke. 
I could add a switch that turned this behavior on/off but that seems OTTT.

Please correct me if I am misunderstanding you.

Yeah, will rejigger the write path for all Mutations to get us the straight run 
of synced-append-to-WAL and then memstore so Put and Increment can be 
intermixed but that will be a subsequent patch after I've done some tests to 
see perf difference.

bq. Getting this into a branch before the reader/writer re-write is going to be 
painful.

Sorry, what do you mean here Sir?

On [~ram_krish] scenario, I think it fine they both fail (the Put is a 'normal' 
failure that this patch has nothing to do with... and would the checkAndPut 
proceed at all if a bad WAL caused the first Put fail? Won't the Put from 
checkAndPut also fail since it is coming in  later).

Ram's scenario does give me pause though and makes me think that on branch 1, 
we should only do Increments with this treatment. Increments are usually 
higher-rate than checkAnd*; a slow checkAnd* is probably tolerable in branch-1. 
Can fix in later branches.

On the use of READ_UNCOMMITTED, its use is narrow, confined to the Increment 
case; we are only reading Increment cells. We can't do 1., in branch-1 or at 
least not in versions up to hbase-1.2. If we do 2., we are slow again.

Great feedback lads. Patch should be for Increments only with big warning that 
bets are off if you mix Put and Increment . Hows that sound?





> [Perf Regression] Merge of MVCC and SequenceId (HBASE-HBASE-8763) slowed 
> Increments, CheckAndPuts, batch operations
> -------------------------------------------------------------------------------------------------------------------
>
>                 Key: HBASE-14460
>                 URL: https://issues.apache.org/jira/browse/HBASE-14460
>             Project: HBase
>          Issue Type: Bug
>          Components: Performance
>            Reporter: stack
>            Assignee: stack
>            Priority: Critical
>         Attachments: 0.94.test.patch, 0.98.test.patch, 
> 1.0.80.flamegraph-7932.svg, 14460.txt, 98.80.flamegraph-11428.svg, 
> HBASE-14460-discussion.patch, client.test.patch, 
> flamegraph-13120.svg.master.singlecell.svg, flamegraph-26636.094.100.svg, 
> flamegraph-28066.098.singlecell.svg, flamegraph-28767.098.100.svg, 
> flamegraph-31647.master.100.svg, flamegraph-9466.094.singlecell.svg, 
> hack.flamegraph-16593.svg, hack.uncommitted.patch, m.test.patch, 
> region_lock.png, testincrement.094.patch, testincrement.098.patch, 
> testincrement.master.patch
>
>
> As reported by 鈴木俊裕 up on the mailing list -- see "Performance degradation 
> between CDH5.3.1(HBase0.98.6) and CDH5.4.5(HBase1.0.0)" -- our unification of 
> sequenceid and MVCC slows Increments (and other ops) as the mvcc needs to 
> 'catch up' to our current point before we can read the last Increment value 
> that we need to update.
> We can say that our Increment is just done wrong, we should just be writing 
> Increments and summing on read, but checkAndPut as well as batching 
> operations have the same issue. Fix.



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

Reply via email to