Создание идентификаторов 1K, назначение идентификатора транзакции для всех строк с учетом параллелизма - PullRequest
0 голосов
/ 13 ноября 2008
  1. Клиент собирается запросить 1K строк идентификаторов с сервера.
  2. Я должен убедиться, что у нас есть 1K ID с clientID = -1, в противном случае я должен вставить 1K новых ID в таблицу.
  3. Затем я должен связать эти 1K ID с clientID
  4. вернуть зарезервированные 1K ID для клиента.

Это так же просто, как завернуть все это в транзакцию?

Ответы [ 2 ]

2 голосов
/ 15 ноября 2008

Вы хотите добавить вторую таблицу, содержащую доступные идентификаторы, например:

AssignedIdsByClient:

  • AssignedId int identity

  • ClientId int - клиент, которому вы присвоили этот диапазон идентификаторов

Но когда вам нужно 1000 идентификаторов, не вставляйте сюда 1000 записей: вместо этого возьмите этот AssignedID и умножьте его на 1000. Например, если кто-то получает AssignedID 15, это означает, что у него есть идентификаторы от 15 000 до 15 999 в другой таблице, где вам действительно нужны идентификаторы.

В противном случае, если вы пытаетесь вставить 1000 записей в одну транзакцию каждый раз, когда кому-то требуется диапазон идентификаторов, у вас будет кошмар параллелизма.

0 голосов
/ 13 ноября 2008

Да, вы можете обернуть их все в одну транзакцию, и другие клиенты не смогут их увидеть, пока вы не подтвердите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...