0
  1. 客户端将向服务器请求 1K 行 ID。
  2. 我必须确保我们有 1K 个 ID,clientID = -1,如果没有,我必须在表中插入 1K 个新 ID。
  3. 然后我必须将那些 1K ID 与 clientID 链接起来
  4. 将保留的 1K ID 返回给客户端。

是否就像将所有这些包装到一个事务中一样简单?

4

2 回答 2

2

您想添加第二个包含可用 ID 的表,如下所示:

AssignedIdsByClient:

  • AssignedId int 身份

  • ClientId int - 您将此 ID 范围提供给的客户

但是当您需要 1,000 个 ID 时,不要在此处插入 1,000 条记录:取而代之的是,取这个 AssignedID 并将其乘以 1,000。例如,如果某人的 AssignedID 为 15,这意味着他们在您实际需要 ID 的另一个表中拥有从 15,000 到 15,999 的 ID。

否则,如果每次有人想要一个 ID 范围时,您都尝试在单个事务中插入 1,000 条记录,那么您将面临并发噩梦。

于 2008-11-15T12:23:19.697 回答
0

是的,您可以将这些全部包装在一个事务中,并且在您提交之前,其他客户端将无法看到它们。

于 2008-11-13T16:33:47.040 回答