gpt4 book ai didi

java - Hibernate IDENTITY 与 SEQUENCE 实体标识符生成器

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

article说:

Unlike identity, the next number for the column value will be retrieved from memory rather than from the disk – this makes Sequence significantly faster than Identity

在identity的情况下是不是说ID来自磁盘?如果是,那么是哪个磁盘以及如何

使用序列,我可以在日志中看到,在插入新记录时对数据库进行了额外的选择查询。但是在身份的情况下,我没有在日志中找到额外的选择查询。那么序列如何变得比身份更快

最佳答案

序列使用的策略:

在插入新行之前,向数据库询问下一个序列值,然后以返回的序列值作为 ID 插入这一行。

身份使用的策略:

插入一行而不指定 ID 值。插入行后,向数据库询问最后生成的 ID。

因此在这两种情况下查询的数量是相同的。 但是,Hibernate 默认使用一种对序列生成器更有效的策略。事实上,当它请求下一个序列值时,它会在内存中保留 50 个(这是默认的 IIRC,它是可配置的)下一个值,并将这 50 个下一个值用于下一个 50 个插入。只有在 50 次插入后,它才会去数据库获取 50 个下一个值。这极大地减少了自动生成 ID 所需的 SQL 查询数量。

身份策略不允许这样的优化。

关于java - Hibernate IDENTITY 与 SEQUENCE 实体标识符生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17780394/

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