From: Zardosht Kasheff Date: January 30 2013 9:43pm Subject: reducing fsyncs during handlerton->prepare and handlerton->commit in 5.6 List-Archive: http://lists.mysql.com/internals/38705 Message-Id: MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Hello all, As I understand it, for transactional storage engines to be in sync with the binary log after recovery, the storage engine must support two phase commit (aka XA). In MySQL 5.5 and MariaDB 5.5, the engine must fsync its log when a transaction prepares and when a transaction commits. So, for each transaction, there are three fsyncs, one for prepare, one for the binary log, and one for commit. I also understand that this requirement has changed in MySQL 5.6 and MariaDB 10.0. With those releases, there is a way for storage engines to reduce their fsyncs. I also believe that MariaDB 5.5 still requires all of these fsyncs. My questions are: - in MySQL 5.6 and MariaDB 10.0, what are the fsyncing requirements for storage engines during prepare and commit? - are there new APIs that the storage engine must comply with in order to get these benefits? - in MySQL 5.6, I see new handlerton methods commit_low and prepare_low. What do these APIs do? What is their contract? Thanks -Zardosht