为什么使用应用程序生成自定义uuid而不是数据库ID?

时间:2014-02-06 14:17:29

标签: database uuid

为什么我应该使用应用程序来生成UUID而不是使用数据库ID?有优势吗?

我看到许多应用程序生成UUID以防止崩溃。这可能发生在像mysql或mongodb这样的数据库id中吗?

1 个答案:

答案 0 :(得分:2)

使用随机UUID而不是依赖数据库ID的一个理论原因是能够在不锁定和递增计数器的情况下并行插入新记录,甚至可以查找唯一索引。

如果您有自动增量字段,则需要维护此计数器。保证自动增量功能正常工作的唯一方法是在递增计数器时锁定此计数器,或者使用它执行其他事务处理。如果您有随机ID,则无需执行此操作。

另一个原因是能够在主 - 主环境中执行并行分布式插入。当不同的数据库服务器访问相同的数据时,在两台服务器之间维护共享计数器会更加昂贵,所以最好从一开始就放弃它并使用随机标识符。

但这些原因在实践中很少适用。您需要大量的INSERT流量来达到收益。我猜大多数UUID的使用并不是因为必要,而是因为“冷静”或对他们真正的目的无知。