Scattered notes on MariaDB undo log.
Undo log
Made by @JohnKoepi .
Undo log
Redo log structure
Linux API can be hard. Sometimes it happens you don’t know why a syscall returns a specific result. The documentation and google not always help. You can turn you face to the Kernel source code but it’s hard to navigate through out the myriad of functions without any help. This is when the ftrace and eBPF comes into play.
Have you ever wondered what is Available Memory in Linux?
Multi-version histories
Once upon a time, I was interviewed for a database engineering position. I was asked about what deadlock prevention algorithms do I know. I could not name a few (besides detection and randomization) and I was rejected. It was an unsatisfying experience because the ideas behind those algorithms happened to be pretty simple and the algorithms are small. There is nothing special to it.
Recently, I came across an excellent exercise of testing a scheduling history for belonging to different serializability classes and had a lot of fun drawing a polygraph and finding out a cycle in it. When I finally managed to draw the correct version of the polygraph, I thought that it could be interesting to someone wondering to learn how testing for view state serializability looks like.
This document contains simple examples and explanations of transaction isolation anomalies well known since the late ’90s. The work based on papers [1], [2], [3]. I hope it will be helpful for someone as a quick reference.
The protocol structure was reverse engineered from the prototypes of the TG protocol and it’s open source clients.
We will start off by kicking out a simple example of uncomplicated for-range loop: