On Thu, 2022-12-15 at 10:56 +1300, Tim Jones wrote:
> could someone please comment on this article 
> https://vladmihalcea.com/uuid-database-primary-key/
> specifically re the comments (copied below) in regards to a Postgres database.
> 
> ...
> But, using a random UUID as a database table Primary Key is a bad idea for 
> multiple reasons.
> First, the UUID is huge. Every single record will need 16 bytes for the 
> database identifier,
> and this impacts all associated Foreign Key columns as well.
> Second, the Primary Key column usually has an associated B+Tree index to 
> speed up lookups or
> joins, and B+Tree indexes store data in sorted order.
> However, indexing random values using B+Tree causes a lot of problems:
>  * Index pages will have a very low fill factor because the values come 
> randomly. So, a page
>    of 8kB will end up storing just a few elements, therefore wasting a lot of 
> space, both
>    on the disk and in the database memory, as index pages could be cached in 
> the Buffer Pool.
>  * Because the B+Tree index needs to rebalance itself in order to maintain 
> its equidistant
>    tree structure, the random key values will cause more index page splits 
> and merges as
>    there is no pre-determined order of filling the tree structure.

I'd say that is quite accurate.

Yours,
Laurenz Albe


Reply via email to