Document performance impact of TWO_PHASE vs. LOCAL TransactionType #5075

Closed
jerrinot opened this Issue Apr 16, 2015 · 2 comments

Projects

None yet

3 participants

@jerrinot
Contributor

We have 2 types of TransactionType

public enum TransactionType {

        /**
         * The two phase commit is more than the classic two phase commit (if you want a regular two phase commit,
         * use local). Before it commits, it copies the commit-log to other members, so in case of member failure,
         * another member can complete the commit.
         */
        TWO_PHASE(1),

        /**
         * Unlike the name suggests, local is a two phase commit. So first all cohorts are asked
         * to prepare if everyone agrees then all cohorts are asked to commit. The problem happens when
         * during the commit phase one or more members crash, that the system could be left in an inconsistent state.
         */
        LOCAL(2);

I ran our MapTransactionTest in a lab and measured effect of the TWO_PHASE type. All other settings were kept as default.
Throughput with TWO_PHASE - 27,759 ops / s
Throughput with LOCAL - 73,680 ops / s

That's a massive difference! TWO_PHASE happens to be a default type.

Our documentation already has a nice chapter describing TransactionType, but there is nothing about performance implications.

@Serdaro Serdaro was assigned by jerrinot Apr 16, 2015
@bwzhang2011

+1

@bwzhang2011

@jerrinot, would you mind leaving more message for the performance issue between LOCAL and TWO-PHASE ?

@Serdaro Serdaro added this to the 3.6 milestone Jun 22, 2015
@Serdaro Serdaro closed this in a83d001 Jun 26, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment