Re: Does setval(nextval()+N) generate unique blocks of IDs?

Поиск
Список
Период
Сортировка
От Craig James
Тема Re: Does setval(nextval()+N) generate unique blocks of IDs?
Дата
Msg-id CAFwQ8rdSsamoNoTcmZiscBh8C8CHVypfcooCt+HHBW+5ERqO1Q@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Does setval(nextval()+N) generate unique blocks of IDs?  (Scott Marlowe <scott.marlowe@gmail.com>)
Ответы Re: Does setval(nextval()+N) generate unique blocks of IDs?
Список pgsql-performance
On Tue, Aug 21, 2012 at 1:03 PM, Scott Marlowe <scott.marlowe@gmail.com> wrote:
> That seems unnecessarily complex.  how about this:
>
> create sequence s;
> select array_agg (a.b) from (select nextval('s') as b from
> generate_series(1,1000)) as a;
>
> Then you just iterate that array for the ids you need.

For brevity I didn't explain the use-case in detail.  I need a series
of IDs that are unique across a cluster of servers and across time
(years and decades).  The blocksize might be anywhere from 1 to
100000.  One server is the master and issues all IDs.

I don't want to iterate over an array to get the values because it's
inefficient: if the blocksize is large (say, 100000 items), it will
require 100000 select() statements.  The solution using an advisory
lock along with setvalue() is nice because the application only makes
one select() statement and gets a block of IDs that are guaranteed to
be unique across the cluster.

Craig


В списке pgsql-performance по дате отправления:

Предыдущее
От: Stephen Frost
Дата:
Сообщение: Re: average query performance measuring
Следующее
От: Scott Marlowe
Дата:
Сообщение: Re: Does setval(nextval()+N) generate unique blocks of IDs?