博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
oracle 序列
阅读量:5086 次
发布时间:2019-06-13

本文共 1547 字,大约阅读时间需要 5 分钟。

序列经常用了,但是很快就忘记了,今天通过网上或者自己知道的一些,总结了一下,在这写一下,为了自己以后复习。

1.序列是什么

 序列SEQUENCE 是解决并发和性能问题,避免发生重复值。它是一个原子事物,取了值就已经生成一个不可再重复的数据,保证每个请求生成唯一的值。

2.序列的特征

  (1) 序列会按自动递增或者递减生成一个唯一的号,它是整型。

  (2) 序列是共享对象,不同的会话可以去读取该SEQUENCE.

  (3)它可以代替应用代码中实现唯一值的序列号。

  (4)可以将序列的一部分值预分配到内从,这样就能更快的访问SEQUENCE.

3.序列的语法

 

 

 

I NCREMENT BY N  是增长频率N,表示每次增长多少,序列之间的间隔,序列器最终的值不能小于0.

START WITH N   表示从N开始,指定生成的第一个序列。

MAXVALUE N|NOMAXVALUE  表示最大值N|表示默认最大值,也就是10^27

CYCLE|NOCYLE  表示循环,当你到最大值时就又进行一次循环|表示没有循环

CACHE N|NOCACHE  表示有你每次在内存中存放了N个SEQUENCE|

4.举例创建序列

create sequence MY_SEQUENCEminvalue 1maxvalue 999start with 1increment by 1cache 20;

 创建好了sequence,可以在user_sequences 中看到sequence的信息

 序列的两个值

 a.nextval 返回下一个值

 b.currval 返回当前的值

注:currval必须区nextval后才会有值,否则没有值。

它们两个使用的地方

a.非子查询的select语句中

b.insert语句中查询的select列表

c.insert 语句的values中

d.update set字句中

不允许出现的地方

a.视图的select的列表

b.有distinct限制的select列表。

c.带有group by,having,order by的select语句中

d.delete,update操作可更新视图中,不允许出现。

e.default 表达式中

cache的一些问题

cache里可以存放一些序列,但是因为cache数字在内存中,那就可能有丢失的风险,比如回滚事物,删除一些序列号,系统奔溃,被别的共享池对象挤出去,这样就会造成GAP。

举例子:如上面创建的序列,那么它的cache是20

SQL> select my_sequence.nextval from dual;

 
   NEXTVAL
----------
         1
 
SQL> select my_sequence.nextval from dual;
 
   NEXTVAL
----------
         2
 
SQL> alter system flush shared_pool;
 
System altered
 
SQL> select my_sequence.nextval from dual;
 
   NEXTVAL
----------
        21

可以看出来,如果刷新内存那么就会造成序列的不连续,也就是会出现GAP,用exec dbms_shared_pool.keep('my_sequence','q')可以把数据保存在内存中,防止数据的丢失。

当然cache在rac中用到的作用是相对比较大的,在序列这块调优时,经常会会用到。

这都是最简单的,但有时还真想不起来,希望大家的批评。这都是为了督促自己学习,不然学过的都忘了。

 

转载于:https://www.cnblogs.com/wujin/archive/2012/02/29/2374682.html

你可能感兴趣的文章
Ubuntu linux下gcc版本切换
查看>>
记一次Web服务的性能调优
查看>>
jQuery.form.js使用
查看>>
(转)linux sort,uniq,cut,wc命令详解
查看>>
关于ExecuteNonQuery执行的返回值(SQL语句、存储过程)
查看>>
UVa540 Team Queue(队列queue)
查看>>
mysql数据增删改查
查看>>
akka之种子节点
查看>>
不知道做什么时
查看>>
matlab 给某一列乘上一个系数
查看>>
密码学笔记——培根密码
查看>>
Screening technology proved cost effective deal
查看>>
MAC 上升级python为最新版本
查看>>
创业老板不能犯的十种错误
查看>>
Animations介绍及实例
查看>>
判断请求是否为ajax请求
查看>>
【POJ2699】The Maximum Number of Strong Kings(网络流)
查看>>
spring boot配置跨域
查看>>
BZOJ 1996 合唱队(DP)
查看>>
进击吧!阶乘——大数乘法
查看>>