gpt4 book ai didi

database - PK生成性能: DB generated sequence or app-generated random

转载 作者:搜寻专家 更新时间:2023-10-30 19:52:56 25 4
gpt4 key购买 nike

我想了解是数据库管理 ID/序列生成以用作 PK 还是让应用程序简单地生成自己的 ID(比如随机 64 位数字)是否更高效。

我怀疑应用程序 + 随机生成会更高效,因为要管理的并发性更少,但话又说回来,如果数据库生成一个序列,那么它总是知道接下来发生的是有序的,并且可以优化索引维护。

最佳答案

PK 背后的理念是它们在设计上是独一无二的。使用 64 位随机数在设计上不是唯一的 - 因此您必须为 PK 冲突准备代码,然后随机化一个新 ID,并将新行再次提交到数据库。这可能会很麻烦。让写入者以并发方式插入新数据最终会使这些问题变得更糟。

数据库可以很好地生成唯一 ID - 毕竟,PK 问题是非常标准的问题,并且有很好的标准解决方案。

ID 生成器本身是一个瓶颈 - 因为它必须确保唯一性,即使它是从多个 session 并行调用的。例如,Oracle 具有序列生成器,可以每个 session 预先生成并“缓存”即将到来的数字,从而解决并发问题。

我们可以从 Tom Kyte 先生那里学到一件重要的事情:使用表中的实际数据和实际负载来衡量您的用例。这是真正智慧的唯一来源:)

我的两分钱:数据库引擎差异很大!共享您正在使用的数据库有助于获得更好的答案。

关于database - PK生成性能: DB generated sequence or app-generated random,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36367227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com