Buy real YouTube subscribers. Best price and warranty.
Get Free YouTube Subscribers, Views and Likes

Postgres MVCC and you or Why COUNT(*) is slow (David Wolever)

Follow
PyCon Canada

It's hard to be a developer today without using a database… but they're often surrounded by an air of reverent mystery.

One of those mysteries is why it's so slow to count all the rows in a table using COUNT(*). After all, it's just a matter of walking a btree and counting leaves… and that should be trivial to optimize!

In this talk I'll answer the question of "why COUNT(*) is slow" by taking a deep dive into the the internals of Postgres' MVCC implementation, looking at:

The question of "why COUNT(*) is slow"
The ondisk storage layout and why, under the hood, it's not a btree
What Postgres means by MVCC, with examples of the utility of transactions
Introduce xid, xmin, xmax
Discuss tuple visibility
Explain VACUUM and xid wraparound
Show off transaction isolation levels

This talk is accessible to anyone who's used an SQL database, with enough depth that experienced developers will find some interesting tidbits.

Presentation page https://2017.pycon.ca/schedule/25/

posted by Mileckiiz