On 25/05/2019 16:19, Peter Eisentraut wrote:
> On 2019-05-25 15:45, Ancoron Luciferis wrote:
>> So, my question now is: Would it make sense for you to handle these
>> time-based UUID's differently internally? Specifically un-shuffling the
>> timestamp before they are going to storage?
>
> It seems unlikely that we would do that, because that would break
> existing stored UUIDs, and we'd also need to figure out a way to store
> non-v1 UUIDs under this different scheme. The use case is pretty narrow
> compared to the enormous effort.
I agree, the backwards compatibility really would be a show stopper here.
About the "enormous effort" I was thinking the simplest "solution" would
be to have the version being detected at he time when the internal byte
array is created from the provided representation which then could
directly provide the unshuffled byte order.
>
> It is well understood that using UUIDs or other somewhat-random keys
> perform worse than serial-like keys.
Yes I know. We're using these UUID's for more than just some primary
key, because they also tell use the creation time of the entry and which
"node" of the highly distributed application generated the entry. It is
like an audit-log for us without the need for extra columns and of fixed
size, which helps performance also at the application level.
>
> Btw., it might be nice to rerun your tests with PostgreSQL 12beta1. The
> btree storage has gotten some improvements. I don't think it's going to
> fundamentally solve your problem, but it would be useful feedback.
>
Thank you for the pointer to 12beta1. I've just read about it and it
might help a bit. I'll give it a try, for sure and report back.
I also have to rerun those tests against PG 11 anyway.
Cheers,
Ancoron