作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 Hibernate 4 和 Oracle 11g。有这样一个将对象映射到数据库的代码:
@Entity
@Table(name = "APPLICATION", schema = "PRODUCTION")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Application")
@JsonIgnoreProperties(ignoreUnknown = true)
public class Application {
@Id
@ComparatorIgnore
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "PRODUCTION.SEQUENCE_NEW")
@SequenceGenerator(name = "PRODUCTION.SEQUENCE_NEW", schema = "PRODUCTION", sequenceName = "PRODUCTION.SEQUENCE_NEW", allocationSize = 1)
@Column(name = "ID")
@XmlTransient
@Getter @Setter private Long id;
我得到了这样一个 id 序列(一段时间后),并且它继续产生带有奇怪间隙的更多值:
956493
955431
956174
955995
950593
950720
952045
950998
951905
950860
949323
950058
949084
948981
948884
948786
950182
950345
949952
950469
我认为增长会更加稳定和平稳。考虑到我有多线程应用程序,我想知道如何修复这种意外行为。序列的定义方式如下:
CREATED 27.02.17
LAST_DDL_TIME 27.02.17
SEQUENCE_OWNER PRODUCTION
SEQUENCE_NAME SEQUENCE_NEW
MIN_VALUE 1
MAX_VALUE 9999999999999999999999999999
INCREMENT_BY 1
CYCLE_FLAG N
ORDER_FLAG N
CACHE_SIZE 20
LAST_NUMBER 957101
PARTITION_COUNT
SESSION_FLAG N
KEEP_VALUE N
我错过了什么?提前谢谢了。任何答案都将受到高度赞赏。
最佳答案
这些差距可以通过多种方式来解释。
首先,CACHE_SIZE 20
表示 Oracle 可以使用保留 20 个 id 的优化,因此不必检查每个插入的序列。如果没有全部使用,可能会留下间隙。当通过多个连接访问数据库时,如果需要更改涉及的表,每个连接可以保留 20 个 id。
其次,回滚的事务也可能会留下间隙,具体取决于您的数据库。这很正常。
没有理由修复此问题,Oracle 保证不存在重复项。它不保证序列没有间隙或完全按顺序。
关于java - Hibernate 和 Oracle 夸大序列递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43042894/
我有一个要添加到 View 中的动画。在动画中,我有一个像折叠一样折叠的单元格。我将 View 分成两个单独的层,并在每个层上应用旋转。这是有效的,但是,效果比我想要的更微妙。我正在寻找一种方法来增加
我是一名优秀的程序员,十分优秀!