Paper review: Concurrency Control Performance Modeling

Thursday, October 27, 2022

Another week, another paper! This week for our Red Book reading group, I read "Concurrency Control Performance Modeling" by Rakesh Agrawal, Michael J. Carey, and Miron Livny. It was 46 pages, and I had a little trouble finding the whole paper—many of the Google Scholar links had missing pages in the middle, which was confusing the first time I encountered a weird gap.

My main takeaways from this paper were:

  • The performance of a database is highly sensitive to its resources and workload in combination
  • Simulation is a tremendously powerful technique for working on database performance and correctness (see also a fantastic talk about TigerBeetle which also talks about simulations for DBs)
  • When resources are limited, blocking transactions is probably better; when resources are unconstrained, restarts are probably better!
  • There's some point of resource utilization below which, behavior resembles having infinite/unconstrained resources (this matches conventional wisdom where we see if disk/CPU goes above X% for our DB, time to make some changes)

Overall this paper was well written and easy to read. It used simulation and analysis to understand the behavior of databases under certain concurrency models. This worked better than simulation or analysis alone, and is definitely a technique to use in my own work.

Highly recommended reading if you're interested in understanding the performance of databases, as either a database engineer or as a user of databases. This paper will help you understand why, for example, having a ton of concurrent transactions in PostgreSQL can bring it to its knees, and you can get higher throughput by limiting the concurrency of connections.

This was a short review, because I don't think there's a whole lot else to say on the paper without directly repeating it. It uses a lot of charts, and the 46 pages are probably more like 20 pages of substance when you consider the space the charts take up, so it's a quick read.

If this post was enjoyable or useful for you, please share it! If you have comments, questions, or feedback, you can email my personal email. To get new posts and support my work, subscribe to the newsletter. There is also an RSS feed.

Want to become a better programmer? Join the Recurse Center!
Want to hire great programmers? Hire via Recurse Center!