▲ | stickfigure a day ago | |||||||||||||||||||||||||
It never occurred to me that Postgres is more efficient when inserting monotonic values. It's the nature of B+ trees so it makes sense. But in the world of distributed databases, monotonic inserts create hot partitions and scalability problems, so evenly-distributed ids are preferred. In other words, "don't try this with CRDB". | ||||||||||||||||||||||||||
▲ | chuckadams a day ago | parent | next [-] | |||||||||||||||||||||||||
It's the nature of B+ trees, multiplied by the nature of clustered indexes: if you use a UUIDv4 as a primary key, your entire row gets moved to random locations, which really sucks when you normally retrieve them sequentially. With a non-clustered index (say, your UUIDv4 id you use for public APIs when you don't want to leak the v7 info) then you'll still get more fragmentation with the random data, but it's something autovacuum can usually keep up with. But it's more work it has to do on top of everything else it does. | ||||||||||||||||||||||||||
| ||||||||||||||||||||||||||
▲ | baq a day ago | parent | prev | next [-] | |||||||||||||||||||||||||
Leaky abstractions in databases are one of the reasons every developer should read the table of contents of the hot databases used by the things he’s working on. IME almost no one does that. | ||||||||||||||||||||||||||
▲ | therealdrag0 12 hours ago | parent | prev [-] | |||||||||||||||||||||||||
Can you elaborate on the hot partition bit? |