我需要通过Hibernate将许多实体插入到数据库中。所以,我想找出最有效的Id生成算法。
因此,Hibernate文档存在四种广泛使用的生成策略:
我应该使用MySQL数据库,所以我不能应用序列生成策略。其他策略呢?从性能的角度看,什么是最有效的?
发布于 2013-01-10 14:12:22
Hibernate中最好的id生成器是增强表和增强序列,再加上适当的优化器(如hilo )。我有增强表+希洛的经验,每秒插入超过10,000条记录.
顺便说一句,"hilo需要为每个生成的实体添加一个额外的查询“的说法显然是错误的:优化器的全部目的是防止这样做。
发布于 2013-01-10 13:50:22
由于您不能使用SEQUENCE,而且AUTO只是自动地从现有的生成算法中选择一个受支持的生成器算法,所以留给您的是IDENTITY和TABLE。
TABLE:使用hi/lo算法有效地生成长、短或int类型的标识符,给定表和列作为hi值的来源。hi/lo算法生成仅对特定数据库唯一的标识符。->意味着每个生成的实体都有一个额外的查询。(如果使用优化器,则不是这样。不幸的是,如果没有指定优化器,则通常不使用优化器。)IDENTITY:支持DB2、MySQL、MySQL、Sybase和HypersonicSQL中的标识列。就-> 性能而言,这是的方式,就像正常情况下没有Hibernate一样。数据库生成,几乎没有开销。存在更多的Hibernate特定生成器,但它们在性能上不会超过数据库生成的ID (参见链接文档中的5.1.2.2.1. Various additional generators )。
https://stackoverflow.com/questions/14259209
复制相似问题