I have two questions about this diagram and the explanation below it in the Dgraph white paper:
Reads at timestamps higher than the current MaxAssigned (MA) must block to ensure the writes up until the read timestamp are applied. Txn 2 receives start ts 3, and a read at ts 3 must acknowledge any writes up to ts 2.
My questions are:
- Does this mean all reads (across all alphas) with a higher start timestamp are blocked until a write from a lower start timestamp is applied—even if those reads are unrelated to the data being written in the transaction?
- If the answer to the previous question is yes, doesn’t this negatively affect database performance? Even if we go out of our way to keep transactions as short as possible, it seems like it would be easy to get in trouble with blocking reads.