(No three-part series is complete without a part 4, right?)
Here is an analogy that describes well what group commit does. We
have a bus driving back and forth transporting people from A to B
(corresponding to fsync()
"transporting" commits to
durable storage on disk). The group commit optimisation is to
have the bus pick up everyone that is waiting at A before driving
to B, not drive people one by one. Makes sense, huh? :-)
It is pretty obvious that this optimisation of having more than one person in the bus can dramatically improve throughput, and it is the same for the group commit optimisation. Here is a graph from a benchmark comparing stock MariaDB 5.1 vs. MariaDB patched …
[Read more]