This is the second in a series of three articles about ideas for implementing full support for group commit in MariaDB. The first article discussed the background: group commit in MySQL does not work when the binary log is enabled. See also the third article.
Internally, InnoDB (and hence XtraDB) do support group commit.
The way this works is seen in the innobase_commit()
function. The work in this function is split into two parts.
First, a "fast" part, which registers the commit in memory:
trx->flush_log_later = TRUE; innobase_commit_low(trx); trx->flush_log_later = FALSE;
Second, a "slow" part, which writes and fsync's the commit to disk to make it durable:
trx_commit_complete_for_mysql(trx)
While …
[Read more]