PostgreSQL – gen_random_uuid vs uuid_generate_v4 for UUID Generation

postgresqlpostgresql-extensionsuuid

What is the difference between the following two functions

Are they both the same behind the scenes? Any performance impacts on using one?

Best Answer

Are they the same?

No.

The Postgres documetation for uuid-ossp suggests using gen_random_uuid() If you only need randomly-generated (version 4) UUIDs,

The uuid-ossp extension also provides other types of UUID (such as mac-addresses based)

The difference?

I looked at the source and discovered that

  • uuid_generate_v4() uses arc4random to determine the random part.

  • gen_random_uuid() uses fortuna instead.

Other than that they do the same job.