"Я имею в виду, как получить следующий идентификатор" ключей доступа ", который в настоящее время не назначен ни одной строке пользователя. Как я могу отслеживать, какие из них еще не использовались, чтобы узнать, какой из них записать втаблица пользователей. "
Если вы хотите, чтобы это работало с абсолютной гарантией того, что все пойдет не так, то все ваши транзакции" добавления пользователя "должны быть полностью сериализованы.Т.е. они не могут выполняться одновременно.
Невозможно получить конкретный ответ на вопрос «какие ключи доступа в настоящее время не используются», пока идет какая-либо транзакция, которая может находиться в самом процессе измененияответ на этот вопрос.
Вместо того, чтобы извлекать готовые ключи доступа из пула, вы можете сгенерировать ключи доступа, хэшируя ID пользователя или имена пользователей или что-то в этом роде?Если это так, я бы сделал это.
Если нет, вам придется либо принять полную сериализацию (т.е. задержку транзакции и, возможно, время ожидания транзакции), либо вам придется принять фактчто все может пойти не так.
Обратите внимание, что «принятие полной сериализации» не должно быть проблематичным.Если вы сохраняете свои транзакции недолговечными (т. Е. Делаете их быстро), скорее всего, вы даже не заметите сериализацию.