...Compare and Swap (CMPSWP) can be used for this, we use it in one specific use case to generate IDs concurrently with very high performance, while avoiding having to lock and release a counter.
https://en.wikipedia.org/wiki/Compare-and-swap
The IBM i MI instruction is here:
https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_71/rzahw/rzahwrzahwcascasco.htm
Tim.
________________________________
From: MIDRANGE-L <midrange-l-bounces@xxxxxxxxxxxxxxxxxx> on behalf of James H. H. Lampert <jamesl@xxxxxxxxxxxxxxxxx>
Sent: 14 December 2020 22:14
To: Midrange Systems Technical Discussion <midrange-l@xxxxxxxxxxxxxxxxxx>
Subject: Re: The age-old database design question - Integers or GUID/UUID for primary keys ? What are your thoughts ?
On 12/14/20 10:37 AM, Peter Dow wrote:
Pre-checking for existence doesn't always work. If you have a bunch of
jobs adding to the file at the same time, there's a pretty good chance
that between the time you pre-check and when you write the record, that
some other job may beat you to the write.
So have your identifier factory set up in such a way that calling it
puts an exclusive lock on something, that the calling program then has
to explicitly release once the new record has been written.
--
JHHL
--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list
To post a message email: MIDRANGE-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit:
https://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at
https://archive.midrange.com/midrange-l.
Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription related questions.
Help support midrange.com by shopping at amazon.com with our affiliate link:
https://amazon.midrange.com
As an Amazon Associate we earn from qualifying purchases.