Re: UUID v7
x4mmm@yandex-team.ru
From: "Andrey M. Borodin" <x4mmm@yandex-team.ru>
To: Peter Eisentraut <peter.eisentraut@enterprisedb.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>,
Daniel Gustafsson <daniel@yesql.se>,
Matthias van de Meent <boekewurm+postgres@gmail.com>,
Nikolay Samokhvalov <samokhvalov@gmail.com>,
"Kyzer Davis (kydavis)" <kydavis@cisco.com>,
Andres Freund <andres@anarazel.de>,
Andrey Borodin <amborodin86@gmail.com>,
PostgreSQL Hackers <pgsql-hackers@postgresql.org>,
"brad@peabody.io" <brad@peabody.io>,
"wolakk@gmail.com" <wolakk@gmail.com>,
sergeyprokhorenko@yahoo.com.au
Date: 2023-08-21T08:42:20Z
Lists: pgsql-hackers
Attachments
- v5-0001-Implement-UUID-v7-as-per-IETF-draft.patch (application/octet-stream) patch v5-0001
- v5-0002-Buffer-random-numbers.patch (application/octet-stream) patch v5-0002
- v5-0003-Use-cached-random-numbers-in-gen_random_uuid-too.patch (application/octet-stream) patch v5-0003
> On 20 Aug 2023, at 23:56, Andrey M. Borodin <x4mmm@yandex-team.ru> wrote: > > <v4-0001-Implement-UUID-v7-as-per-IETF-draft.patch> I've observed, that pre-generating and buffering random numbers makes UUID generation 10 times faster. Without buffering postgres=# with x as (select gen_uuid_v7() from generate_series(1,1e6)) select count(*) from x; Time: 5286.572 ms (00:05.287) With buffering postgres=# with x as (select gen_uuid_v7() from generate_series(1,1e6)) select count(*) from x; Time: 390.091 ms This can speed up gen_random_uuid() on the same scale too. PFA implementation of this technique. Best regards, Andrey Borodin.
Commits
-
Fix timestamp overflow in UUIDv7 implementation.
- a5419bc72e22 18.0 landed
-
Add UUID version 7 generation function.
- 78c5e141e9c1 18.0 landed
-
Add some UUID support functions
- 794f10f6b920 17.0 landed