网站首页 > 技术文章 正文
概述
所谓序列,在oracle中就是一个对象,这个对象用来提供一个有序的数据列,这个有序的数据列的值都不重复。序列(Sequence)是用来生成连续的整数数据的对象,常常用来作为主键中增长列,序列中的可以升序生成,也可以降序生成。
语法结构:创建序列
CREATE SEQUENCE sequence_name [START WITH num] [INCREMENT BY increment] [MAXVALUE num|NOMAXVALUE] [MINVALUE num|NOMINVALUE] [CYCLE|NOCYCLE] [CACHE num|NOCACHE]
语法解析:
① START WITH:从某一个整数开始,升序默认值是1,降序默认值是-1。
② INCREMENT BY:增长数。如果是正数则升序生成,如果是负数则降序生成。升序默认值是1,降序默认值是-1。
③ MAXVALUE:指最大值。
④ NOMAXVALUE:这是最大值的默认选项,升序的最大值是:1027,降序默认值是-1。
⑤ MINVALUE:指最小值。
⑥ NOMINVALUE:这是默认值选项,升序默认值是1,降序默认值是-1026。
⑦ CYCLE:表示如果升序达到最大值后,从最小值重新开始;如果是降序序列,达到最小值后,从最大值重新开始。
⑧ NOCYCLE:表示不重新开始,序列升序达到最大值、降序达到最小值后就报错。默认NOCYCLE。
⑨ CACHE:使用CACHE选项时,该序列会根据序列规则预生成一组序列号。保留在内存中,当使用下一个序列号时,可以更快的响应。当内存中的序列号用完时,系统再生成一组新的序列号,并保存在缓存中,这样可以提高生成序列号的效率。Oracle默认会生产20个序列号。
⑩ NOCACHE:不预先在内存中生成序列号。
实例:创建序列
需求:创建一个从1开始,默认最大值,每次增长1的序列,要求NOCYCLE,缓存中有30个预先分配好的序列号。
实现:
SQL> CREATE SEQUENCE MYSEQ MINVALUE 1 START WITH 1 NOMAXVALUE INCREMENT BY 1 NOCYCLE CACHE 30 /
序列创建之后,可以通过序列对象的CURRVAL和NEXTVAL两个“伪列”分别访问该序列的当前值和下一个值。
实例:序列使用
SQL> SELECT MYSEQ.NEXTVAL FROM DUAL; SQL> SELECT MYSEQ.CURRVAL FROM DUAL;
实例:序列修改和删除
使用ALTER SEQUENCE可以修改序列,在修改序列时有如下限制:
1. 不能修改序列的初始值。
2. 最小值不能大于当前值。
3. 最大值不能小于当前值。
使用DROP SEQUENCE命令可以删除一个序列对象。
SQL> ALTER SEQUENCE MYSEQ MAXVALUE 10000 MINVALUE -300 / SQL> DROP SEQUENCE MYSEQ;
在RAC环境中,序列的Cache问题可能会对性能有着决定性的影响,缺省的序列Cache值为20,这对RAC环境远远不够。如果存在序列号使用的竞争,就可能在数据库中看到明显的队列等待:enq: SQ - contention
在RAC情况下,可以将使用频繁的序列Cache值增加到10000,或者更高到50000,这些值在客户的环境中都有采用。基本上cache 大于20的时候性能基本可以接受,最好设置100以上,nocache的时候性能确实很差,最大相差20倍.
后面会分享更多DBA方面的内容,感兴趣的朋友可以关注一下~
猜你喜欢
- 2024-10-13 oracle中system、sysaux或者临时表空间占用过大一般是什么原因?
- 2024-10-13 oracle数据库定期备份与删除过期备份文件
- 2024-10-13 Oracle审计日志过大?如何清理及关闭审计机制?
- 2024-10-13 oracle下使用oci快速卸载数据文件,12c的1017问题
- 2024-10-13 详解Oracle 11g如何清理数据库的历史日志
- 2024-10-13 常用SQL系列之(六):删除方式、数据库、表及索引元信息查询等
- 2024-10-13 Oracle 分区表 范围分区、列表分区、HASH分区及组合分区
- 2024-10-13 记一次生产数据库SYSAUX表空间清理过程,值得收藏
- 2024-10-13 关于Oracle数据库12c 新特性总结 oracle数据库12c版本
- 2024-10-13 SQL中的DROP操作:撤销索引、表和数据库的利器
你 发表评论:
欢迎- 05-10吃了一年的SU,最好用的插件都在这了
- 05-10前端必看!这款神器让网站界面告别千篇一律
- 05-10程序员请收好:10个非常有用的 Visual Studio Code 插件
- 05-10前端资源-实用的JS插件(前端代码规范插件)
- 05-105款好用Office插件,一定不要错过
- 05-10超详细带你从入门开始,开发一个超实用的浏览器插件
- 05-10前端流行框架Vue3教程:12. 组件的注册方式
- 05-10相见恨晚,这些科研插件让你的浏览器瞬间起飞
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端md5加密 (49)
- 前端路由 (55)
- 前端数组 (65)
- 前端定时器 (47)
- 前端懒加载 (45)
- 前端接口 (46)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle查询数据库 (45)
- oracle约束 (46)
- oracle 中文 (51)
- oracle链接 (47)
- oracle的函数 (57)
- mac oracle (47)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)