List:Internals« Previous MessageNext Message »
From:MARK CALLAGHAN Date:October 8 2010 3:39am
Subject:Re: A question of "MySQL external XA and internal XA"
View as plain text  
Internal XA is used to keep the replication binlog and Innodb in sync
after a crash. In this case the commit protocol is:
1) prepare InnoDB (force changes in transaction log to disk, mark
transaction as "prepared")
2) write transaction changes to binlog including XID event
3) commit InnoDB (write and force "commit" record to transaction log)

If mysqld crashes after step 2, then the "prepared" InnoDB
transactions will be committed during crash recovery. In crash
recovery, mysqld determines the list of committed transactions from
the current binlog and uses that to determine what to do with
"prepared" transactions.

The work above requires 3 fsync calls in the normal case. The fsyncs
done in steps #1 and #3 can be shared across many concurrent
transactions. The fsync done in step #2 cannot today -- unless you use
the Google patch. I know that MariaDB is very interested in changing
that. I suspect that MySQL is as well.

On Thu, Oct 7, 2010 at 7:30 PM, Haihao Tang <haihaot@stripped> wrote:
> Hi,
>    I am recently in the study of MySQL XA. In the section
> "Restrictions on XA Transactions" of MySQL reference 5.1
> (http://dev.mysql.com/doc/refman/5.1/en/xa-restrictions.html), it
> wrote:
>    For “external XA,” a MySQL server acts as a Resource Manager
> and
> client programs act as Transaction Managers. For “Internal XA”,
> storage engines within a MySQL server act as RMs, and the server
> itself acts as a TM.
>    I understand the "external XA" where MySQL server acts as RM, but
> the "internal XA" confuse me. How does MySQL server itself act as a TM
> and storage engine (It could be only InnoDB, right?) act as RM? How
> does MySQL server manage storage engines to accomplish a DTP? Any
> examples?
>    Thank you!
>
> Best Regards,
>
>                   Robin
>
>                   2010-10-8
>
> --
> MySQL Internals Mailing List
> For list archives: http://lists.mysql.com/internals
> To unsubscribe:    http://lists.mysql.com/internals?unsub=1
>
>



-- 
Mark Callaghan
mdcallag@stripped
Thread
A question of "MySQL external XA and internal XA"Haihao Tang8 Oct
  • Re: A question of "MySQL external XA and internal XA"MARK CALLAGHAN8 Oct
    • Re: A question of "MySQL external XA and internal XA"Haihao Tang11 Oct
      • Re: A question of "MySQL external XA and internal XA"MARK CALLAGHAN11 Oct
        • Re: A question of "MySQL external XA and internal XA"Haihao Tang11 Oct