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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Aug 21, 2012 at 2:59 PM, Craig James <cjames@xxxxxxxxxxxxxx> wrote:
> On Tue, Aug 21, 2012 at 1:03 PM, Scott Marlowe <scott.marlowe@xxxxxxxxx> 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.

Ahhh ok.  Yeah that's why I said early on I wasn't really sure of your
use case, cause that really can make all the difference.  Good to
know.


-- 
Sent via pgsql-performance mailing list (pgsql-performance@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-performance


[Postgresql General]     [Postgresql PHP]     [PHP Users]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Yosemite]

  Powered by Linux