Be weary that while the article contains some interesting technical details it doesn’t suggest any mitigation strategies other than using their commercial product.
TBF the only “mitigation” the article is an identification and explanation of the issue and already 3500 words, the only “mitigation” it mentions (more or less as an aside) is keeping track of when postgres screws itself up.
However it does conclude with a “to be continued” for the next instalment of the series.
And awareness of issues is an important tool in an ops’ belt.
Yeah, there’s something really eerie about the article. In a way, it makes me think that it betrays its reader. Let me try to put it to words: The feeling I get is that the article wasn’t written to inform the reader, it was written to scare the readers and lead them towards an intended conclusion for commercial benefit. In that sense I think it’s manipulative and exploitative.
To be honest, I want to think that everything written in this article is obvious to anyone who’s using Postgres seriously in production. We know that these are the weak spots of Postgres’s MVCC implementation (as trade-offs for properties we desire), so you design your database interaction to avoid them. It’s like saying human legs are the worst because if you kick them from this precise direction you can break their knees.
Neither one of these articles are great, but the defense doesn’t seem to really touch the criticisms. It seems to amount to two things:
MVCC is good. Probably true–many (I want to say most, but I’m not quite confident there) DBs use MVCC, but MVCC is a feature that can be implemented different ways. The criticism seems really about the choices Postgres makes surrounding MVCC that can cause table bloat and excess writes.
Certain workloads won’t run into MVCC problems. Good to know, but it’s pretty handwavy on the workloads that are at issue–the only detail I see is that you can avoid transaction wraparound with batch inserts. Of course, transaction wraparound is just one potential problem.
Hey Andy, I wished the article also highlighted why Postgres made those design decisions and their advantages too.
Second, it says how MySQL doesn’t suffer from these, but I wish it included details on how MySQL solves the similar issues. MySQL keeps deltas for row versioning, which reduces the table space, but how does it reconcile the deltas to build the full row again? How does that affect read/writes?
Also, which MVCC design would be the “right” one for a modern relational database? The linked paper talks about in-memory transactions, does it apply to on-disk databases like Postgres too?
We will be blunt: if someone is going to build a new MVCC DBMS today, they should not do it the way PostgreSQL does (e.g., append-only storage with autovacuum).
Tbh, rereading, I don’t know why I included your post in my criticism. Your post is significantly better than the other one, and I’ll probably refer a colleague to it.
The AI art on that story is significantly uglier and worse than it would have been to just superimpose a vacuum cleaner on top of a Creative Commons picture of an elephant. 😐
It’s made by an illustrator called Liam Francis Walsh. (Here’s Andy Pavlo’s announcing that Ottertune hired him as their illustrator).
If it’s a matter of taste, we can’t dispute. But let me point out some skilfully done bits, you might enjoy it more when you see that? I like the illustration a lot, so this is a fun exercise for me.
(Then again, maybe knowing it’s made by a human is enough to like the illustration more. “Please don’t use AI to make your drawings” is a sentiment I can get behind.)
So, start with the otter’s pose. He’s standing still, and Walsh still managed to give the pose energy. If you look at the otter’s action line, you see a nice springy curve from the otter’s cap down his spine. If the action line had been straight down, the drawing would be lifeless. Curve it too much, it would look like he’s falling left, or resisting a foce from his left. But this otter has a nice little lean-away “ugh” energy.
Also, he’s not leaning away in avoidance. Look at this eyes and mouth: they’re facing right, and have a determined air, so you can see that he’s confronting whatever he’s leaning away from. The second/third action lines, too: one runs along his upper arm, straight right from his shoulder, and one sort of springs out from his neck along the CENSORED sign.
When you look at the individual action lines as a whole, the combination is a balanced pose. Which is a skill: not every line headed right will succesfully balance a line leaning left.
Next, let’s look at the shading. It’s pretty simple: light falls from the top right, so top and right edges get a little light / the rest gets shade to give an idea of volume. But look at the little notches of light at the bottom right of the sweater, on the edges of the hood, and in his elbow: they run how you expect that clothing would crinkle. Also note the veeery thin highlight to the left of each crease in the paper; and how the better-lit top of his snout has just the teensiest brown highlights at snout and eyebrow to back it up; and the one little patch of extra dark shade on the sweater’s left edge, just below the paper.
Linework: I hadn’t noticed until I looked more closely, but the lines fo foreground edges are more prominent than the lines of the background edges. You can see it in the front and back edge of the cap’s visor. Also the little gap in the outer line of his arm, just at the cusp of the curve, helping your brain fill in “ah, the fabric continues round the back”. And note the outline of the snout: some of the outline is smooth, and some of it is little texture lines suggesting fur, but the two kinds of line work as one.
I think there’s also something to say about the composition, how the square half on the right (blue, empty) complements the square half on the left (white/red subject, busy)? But really, here I’m reduced to “I like it, and I don’t know why; and something feels a liiiitle off-balance, and I also don’t know why”. Suggestions welcome.
Wah, that got a bit longer than expected. Thanks for letting me use your comment as a springboard, I had a lot of fun.
I think there’s also something to say about the composition, how the square half on the right (blue, empty) complements the square half on the left (white/red subject, busy)? But really, here I’m reduced to “I like it, and I don’t know why; and something feels a liiiitle off-balance, and I also don’t know why”. Suggestions welcome.
Excellent write-up! Yes, Liam is the artist. We love him. He’s a genius.
The reason why the composition / layout is off (everything is on the left side) is because he drew it with extra space so that we could put the title of the blog article in the image. But then our web site designer said not to do that anymore. So that’s why it looks unbalanced.
The AI art on that story is significantly uglier and worse than it would have been to just superimpose a vacuum cleaner on top of a Creative Commons picture of an elephant.
I can assure you that it was not generated by AI. You simply do not understand how amazing our (human) artist is:
I think the vacuum cleaner thing is about the other post… If you turn on JavaScript, you’ll see a 3d computer graphic of an elephant with a vacuum cleaner. And that truly is ugly :)
Yeah, the post by Ryan of an elephant whose forepaw is in the middle of an extremely painful fracturing and whose toes have already had half of the ivory removed.
Be weary that while the article contains some interesting technical details it doesn’t suggest any mitigation strategies other than using their commercial product.
TBF the only “mitigation” the article is an identification and explanation of the issue and already 3500 words, the only “mitigation” it mentions (more or less as an aside) is keeping track of when postgres screws itself up.
However it does conclude with a “to be continued” for the next instalment of the series.
And awareness of issues is an important tool in an ops’ belt.
Yeah, there’s something really eerie about the article. In a way, it makes me think that it betrays its reader. Let me try to put it to words: The feeling I get is that the article wasn’t written to inform the reader, it was written to scare the readers and lead them towards an intended conclusion for commercial benefit. In that sense I think it’s manipulative and exploitative.
To be honest, I want to think that everything written in this article is obvious to anyone who’s using Postgres seriously in production. We know that these are the weak spots of Postgres’s MVCC implementation (as trade-offs for properties we desire), so you design your database interaction to avoid them. It’s like saying human legs are the worst because if you kick them from this precise direction you can break their knees.
[Comment removed by author]
Accidental duplicate comment, by the way.
Oops thanks.
This reminds me of this article in defense of MVCC and vacuum I saw this morning.
Neither one of these articles are great, but the defense doesn’t seem to really touch the criticisms. It seems to amount to two things:
Author here (of the “hate” one). Please let me know what about it you don’t like.
Hey Andy, I wished the article also highlighted why Postgres made those design decisions and their advantages too.
Second, it says how MySQL doesn’t suffer from these, but I wish it included details on how MySQL solves the similar issues. MySQL keeps deltas for row versioning, which reduces the table space, but how does it reconcile the deltas to build the full row again? How does that affect read/writes?
Also, which MVCC design would be the “right” one for a modern relational database? The linked paper talks about in-memory transactions, does it apply to on-disk databases like Postgres too?
I wish this said the alternatives
Tbh, rereading, I don’t know why I included your post in my criticism. Your post is significantly better than the other one, and I’ll probably refer a colleague to it.
Yeah, I agree on the quality (which is why I chose not to submit that article here as a proper post)
The AI art on that story is significantly uglier and worse than it would have been to just superimpose a vacuum cleaner on top of a Creative Commons picture of an elephant. 😐
It’s made by an illustrator called Liam Francis Walsh. (Here’s Andy Pavlo’s announcing that Ottertune hired him as their illustrator).
If it’s a matter of taste, we can’t dispute. But let me point out some skilfully done bits, you might enjoy it more when you see that? I like the illustration a lot, so this is a fun exercise for me.
(Then again, maybe knowing it’s made by a human is enough to like the illustration more. “Please don’t use AI to make your drawings” is a sentiment I can get behind.)
So, start with the otter’s pose. He’s standing still, and Walsh still managed to give the pose energy. If you look at the otter’s action line, you see a nice springy curve from the otter’s cap down his spine. If the action line had been straight down, the drawing would be lifeless. Curve it too much, it would look like he’s falling left, or resisting a foce from his left. But this otter has a nice little lean-away “ugh” energy.
Also, he’s not leaning away in avoidance. Look at this eyes and mouth: they’re facing right, and have a determined air, so you can see that he’s confronting whatever he’s leaning away from. The second/third action lines, too: one runs along his upper arm, straight right from his shoulder, and one sort of springs out from his neck along the CENSORED sign.
When you look at the individual action lines as a whole, the combination is a balanced pose. Which is a skill: not every line headed right will succesfully balance a line leaning left.
Next, let’s look at the shading. It’s pretty simple: light falls from the top right, so top and right edges get a little light / the rest gets shade to give an idea of volume. But look at the little notches of light at the bottom right of the sweater, on the edges of the hood, and in his elbow: they run how you expect that clothing would crinkle. Also note the veeery thin highlight to the left of each crease in the paper; and how the better-lit top of his snout has just the teensiest brown highlights at snout and eyebrow to back it up; and the one little patch of extra dark shade on the sweater’s left edge, just below the paper.
Linework: I hadn’t noticed until I looked more closely, but the lines fo foreground edges are more prominent than the lines of the background edges. You can see it in the front and back edge of the cap’s visor. Also the little gap in the outer line of his arm, just at the cusp of the curve, helping your brain fill in “ah, the fabric continues round the back”. And note the outline of the snout: some of the outline is smooth, and some of it is little texture lines suggesting fur, but the two kinds of line work as one.
I think there’s also something to say about the composition, how the square half on the right (blue, empty) complements the square half on the left (white/red subject, busy)? But really, here I’m reduced to “I like it, and I don’t know why; and something feels a liiiitle off-balance, and I also don’t know why”. Suggestions welcome.
Wah, that got a bit longer than expected. Thanks for letting me use your comment as a springboard, I had a lot of fun.
Excellent write-up! Yes, Liam is the artist. We love him. He’s a genius.
The reason why the composition / layout is off (everything is on the left side) is because he drew it with extra space so that we could put the title of the blog article in the image. But then our web site designer said not to do that anymore. So that’s why it looks unbalanced.
Ha, sorry, you got confused about which post. The otter flipping the bird is great!
I can assure you that it was not generated by AI. You simply do not understand how amazing our (human) artist is:
https://www.youtube.com/watch?v=OicF7ht6YaU
I think the vacuum cleaner thing is about the other post… If you turn on JavaScript, you’ll see a 3d computer graphic of an elephant with a vacuum cleaner. And that truly is ugly :)
Yeah, the post by Ryan of an elephant whose forepaw is in the middle of an extremely painful fracturing and whose toes have already had half of the ivory removed.
*slaps forehead*
Sorry, @carlmjohnson, I now realise that I completely misread which post’s image you were describing. Apologies!
Thanks for the clarification, Sjamaan.