参考文献
http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/admin/r0004201.htm
CACHE的主要用途是
在获取第一次的sequence时,预先创建出一部分sequence并存放在缓存中
例如:
CREATE SEQUENCE
SEQ_UNIQUEKEY AS INT
START WITH 1
INCREMENT BY 1
MINVALUE 1
MAXVALUE 99999999
CYCLE
CACHE 300
ORDER;
当创建成功时,在缓存中已经存在了1~300号sequence,每次执行NEXTVAL时,都会使用缓存中的seq。当seq增加到300时,下一次的NEXTVAL命令就会重新产生301~600号seq并存放于缓存。
若,当前连接中断,并重新连接数据库时,NEXTVAL命令取得的值就是在缓存中的最小值。
例如:
NEXTVAL.......(执行100次,下次seq为101)
执行,commit,disconnect命令断开连接(或者发生异常,强制commit)
则,下次连接到数据库后,执行NEXTVAL命令取得的seq就为301,101~300号自动作废。
分享到:
相关推荐
其中,sequence_name 是 SEQUENCE 的名称,increment 是每次增加的值,start_value 是起始值,max_value 是最大值,cache_size 是缓存大小。 例如,创建一个名为 S_S_DEPART 的 SEQUENCE,初始值为 1,增加值为 1,...
此外,还可以选择是否让`sequence`达到最大值后重新开始(`CYCLE`),以及是否启用缓存以提高性能(`CACHE`)。 #### 三、使用CURRVAL与NEXTVAL 一旦定义了`sequence`,就可以通过`CURRVAL`和`NEXTVAL`获取当前值...
创建一个名为`SEQ_TEST`的序列,初始值为1,每次递增1,无最大值限制,不循环,不缓存。 ```sql CREATE SEQUENCE SEQ_TEST MINVALUE 1 NOMAXVALUE START WITH 1 INCREMENT BY 1 NOCYCLE NOCACHE; ``` #### 三、...
- `CACHE`用来设置缓存的序列数,提高性能,但可能导致序列跳跃(在系统异常或数据库重启后)。 2. **Sequence的使用**: - `NEXTVAL`:获取序列的下一个值并增加序列。 - `CURRVAL`:返回当前序列的值,必须在...
-- 缓存10个值 ``` - **使用序列**: `NEXTVAL`和`CURRVAL`是两个重要的关键字,前者返回序列的下一个值并将其自增,后者则返回序列的当前值。 ```sql SELECT emp_sequence.NEXTVAL FROM DUAL; SELECT emp_...
`SEQUENCE_CACHE_ENTRIES` 参数可以设置能够同时被缓存的 Sequence 数量。如果需要删除 Sequence,可以使用 `DROP SEQUENCE` 命令。 ```sql DROP SEQUENCE order_seq; ``` #### 七、Oracle 中实现主键的自动增加 ...
- **NOCACHE**:表示不缓存 `Sequence` 的值,每次调用都会生成新的值。 #### 三、使用 Sequence 生成主键值 为了使用 `Sequence` 为表中的主键字段赋值,可以通过以下步骤进行: 1. **创建表**: ```sql ...
Oracle提供了`CACHE`选项来缓存Sequence值,提高性能,但可能会导致序列号不连续。如果不使用`CACHE`,每次请求都会从数据库获取新的值,保证了序列的唯一性但可能降低性能。 在提供的压缩包文件`07_调整级别示例...
例如,通过设置`CACHE 50`可以缓存一定数量的sequence值,减少对数据库的频繁访问。 7. **安全性与维护**:确保sequence和trigger的权限设置合理,防止未授权的访问和修改。定期审查和优化这些对象,以适应业务的...
序列的缓存(Cache)设置是影响其性能的关键因素之一,尤其是在高并发性的环境中。序列缓存是预先从序列中获取并存储在内存中的一组数值,以减少磁盘I/O操作,提高数据插入速度。本篇将详细讨论序列缓存对性能的影响...
2. **CACHE与NOCACHE**:`CACHE`选项可以提高性能,但若数据库实例异常关闭,则可能丢失缓存中的值;`NOCACHE`则更安全,但性能稍低。 3. **查询当前值**:可以通过`LAST_NUMBER`属性来查看序列当前的值。 ```sql ...
在检查并确保运行在链接地址上(如果不在,则进行修正)后,会进行内核解压工作的准备工作,包括清零BSS段以及调用cache_on函数来打开缓存,从而为内核解压做准备。 5. MMU与缓存的启用 在解压内核之前,必须设置好...
### Hibernate的缓存应用 #### 一、概述 在现代软件开发中,为了提升系统性能与响应速度,缓存技术的应用越来越广泛。其中,Hibernate作为Java领域内一款优秀的对象关系映射(ORM)框架,其缓存机制尤其受到开发者...
`SEQUENCE_CACHE_ENTRIES`参数可以设置同时被缓存的Sequence数目,调整这个参数可以影响整个数据库的Sequence性能。 总结,Oracle Sequence是生成唯一序列号的重要工具,通过灵活地配置和使用,可以满足各种业务...
- `cache`用于让序列预生成一些序列号缓存在内存中。 - `cycle`用于指定序列到达最大值时从最小值开始循环。 - **删除序列的格式规范**: - 删除序列时必须带上属主的名字。 ```sql drop sequence b2cbill.seq...
这里定义了一个名为`seq_test`的Sequence,最小值为10000,最大值为99999999999999999,初始值为20000,每次递增1,缓存20个值,且循环使用(CYCLE)。 二、Sequence的使用 在Oracle中,可以通过`seq_test.nextval`...
- `CACHE`:预取值的数量,预取的值存储在缓存中,这样可以减少与数据库的交互次数,提高性能。但是,如果在缓存中的值未被全部使用时发生系统崩溃,这些值可能会丢失。如果不想使用缓存,则使用`NOCACHE`。 #### ...
当Oracle的共享池(SHARED_POOL)被刷新时,如果序列有缓存(CACHE),未被使用的缓存值将丢失,从而在下一次请求时产生较大的跳跃。例如,设置序列缓存为40,然后刷新共享池,未被使用的序列值将不再有效。 ```...
- `CACHE cache_size`: 指定预分配并缓存的序列号数量。如果数据库出现故障,则可能会丢失已经缓存但尚未使用的序列号。 例如,根据题目给出的部分内容,创建名为`person_id`的序列: ```sql CREATE SEQUENCE ...