Oracle在创建序列(sequence)时有个参数你可以选择cache或者nocache

【Oracle】 Oracle Sequence 性能优化 简单的说,Cache 就是Oracle每次向Sequence进行请求时,分配出的独立数字数量。2. 不论是nocache还是cache , 每次访问nextval的过程都是不可逆的,在同一session中,在执行一系列dml和sequence的操作后,用户执行rollback,希望将操作回滚,但是sequence此时就显得异常顽固,用掉的nextval将无法被重现。在单实例环境没有影响,在RAC环境此时,多实例实际缓存相同的序列,此时在多个实例并发取该序列的时候,会有短暂的资源竞争来在多实例之间进行同步。 阅读详情

原文:http://blog.youkuaiyun.com/u012143723/article/details/22034613

 

下面来讲一下两者的区别:

先来看下创建sequence的语句:

create sequence SEQ_ID  
minvalue 1  
maxvalue 99999999  
start with 1  
increment by 1  
cache n  / nocache  --其中n代表一个整数,默认值为20
order;

  • 指定CACHE值:

Oracle就可以预先在内存里面放置一些Sequence,这样存取的较快。cache里面的取完后,Oracle自动再取一组到cache。

使用cache或许会跳号, 比如数据库突然不正常down掉(shutdown abort),cache中的Sequence就会丢失。

  • 举个例子:

比如你的sequence中cache 100,那当你sequence取到90时突然断电,那么在你重启数据库后,sequence的值将从101开始。

  • 指定NOCACHE值:

Oracle就不会预先在内存里面存放Sequence,当然这也就可以避免数据库不正常down掉的sequence丢失。

  • NOCACHE值会产生一些问题:

创建nocache   sequence在高并发访问时,容易导致rowcache lock等待事件,主要原因是每次获取nextval时都需要修改rowcache中的字典信息。

  • 使用nocache值,还会导致如下问题:

由于每次修改字典信息都需要commit,可能导致log file sync等待,nocache sequence在RAC环境下,会对基于sequence生成的列创建的索引造成实例间大量索引块争用

基于以上问题,避免创建nocache sequence。

  • sequence相关保护机制:
    • row cache lock:在调用sequence.nextval情况下需要修改数据字典时发生,对应rowcache lock事件
    • SQ lock:在内存缓存(并非rowcache)上获取sequence.nextval时发生,对应enq:SQ-contention事件
    • SV lock:RAC环境下获取cache+order属性的sequence.nextval时发生,对应DFS lock handle事件
  • 什么情况下使用cache什么时间上使用nocache?
    • 应该尽量使用cache,因为现在的数据库很多都是在高并发的情况下运行的,首先这样可以搞性能,并且也不会产生rowcache lock等待事件。可能有些人会担心数据库不正常的down掉会产生序列号间断,但这也是很少的情况。
    • 当然如果你的业务要求是绝不能产生间断的序列号,那就要使用nochache了。
从零开始:使用Python实现基于深度强化学习的柔性车间调度系统 本文详细介绍了如何使用Python和深度强化学习(DRL)构建柔性车间调度系统,特别关注图神经网络(GNN)与近端策略优化(PPO)算法的结合应用。通过实战指南,读者将学习从环境准备、异构图构建到PPO算法实现的全流程,最终实现生产效率的显著提升。 阅读详情

相关推荐

高通camera:PDAF的配置与测试

确认相关log日志都已经打开了之后,判断是在3A算法中没有应用到PDAF,可能是之前在调试AF效果的时候关闭了PDAF,打开效果文件对应的文件夹,在\kamorta_lce_S5K3P9\Scenario.Default\XML\STATS。在log中搜索af_pdaf_proc_pd_single,这个函数是pdaf算法中的,源码被封装了,这里看不到,因此只能通过log打印出来的参数来分析pd是否正确,主要参数有pd ,defocus,confidence。PDAF的配置与测试。

arvin_xiong的博客 2489

oracle sequence cache 机制

声明   本文转自     http://space.itpub.net/17203031/viewspace-717042   感谢作者的辛苦劳动,谢谢    在Oracle中,我们没有MYSQL和SQL Server可以使用的自增数据类型。大部分场景下,如果我们需要生成业务无关的(Business-Independent)主键列,序列Sequence对象是我们最方便的选择。 ...

weixin_30425949的博客 458

3D视觉革命丨多相机协同拼接技术如何重塑工业检测边界

本文深入探讨了多相机协同拼接技术如何突破单台3D相机的物理局限,实现工业检测从“点面”到“立体”的无死角覆盖。通过拆解系统标定、同步融合等核心技术,并结合锂电池、长轴零件等实战案例,揭示了该技术如何以虚拟“超级视觉传感器”重塑检测边界,提升精度与效率。

weixin_29056865的博客 388

Oracle Sequence Cache 参数说明

<br />公司上线一套RAC 系统。 Aston对Sequence 的 Cache 参数表示关注,建议并发大的系统对Cache设置大一点。 这样可以提高性能。 和Aston 讨论了一下。 又从网上查了一下。 <br /> <br />RACLE SEQUENCE 介绍<br />http://blog.youkuaiyun.com/tianlesoftware/archive/2009/10/30/4745039.aspx<br /> <br />之前整理的一篇文章。 刚才看了一下,也是从网上转的。 那是还是写blo

laichangbo的专栏 748

使用SSE流式输出(Javaweb前后端实战)

SSE(Server-Sent Events)是一种在Web应用中实现单向实时通信的技术。通过SSE,服务器可以主动向客户端发送更新,而无需客户端不断发起请求。这对于需要实时更新的应用场景(如聊天应用、实时数据监控等)非常有用。(服务端单向传输客户端,长连接)

记得开心一点嘛的博客 1万+

手把手教你搞定6脚三位一体数码管的驱动(附C语言源码与Visual Studio调试技巧)

本文详细解析了6脚三位一体数码管的驱动原理与实战技巧,包括引脚复用、动态扫描时序、Visual Studio模拟调试及单片机实现。通过C语言源码示例和调试技巧,帮助开发者快速掌握非标准数码管的驱动方法,提升硬件开发效率。

weixin_30613727的博客 593

Oracle数据库中序列用法讲解

序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字)。其主要的用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值。 创建序列需要CREATE SEQUENCE系统权限。序列的创建语法如下: CREATE SEQUENCE 序列名 [INCREMENT BY n] [START WITH n] ...

贾俊德 821

Qt图形视图框架实战:QGraphicsScene、QGraphicsView与QGraphicsItem的深度应用

本文深入解析Qt图形视图框架的核心组件QGraphicsScene、QGraphicsView与QGraphicsItem的实战应用。通过“舞台、镜头与演员”的比喻,清晰阐述了三者的协作关系,并详细介绍了场景管理、多视图同步、交互增强、自定义图形项绘制与性能优化等高级技巧,帮助开发者高效构建复杂的交互式图形界面。

weixin_29251337的博客 263

Oracle Sequence中Cache与NoCache的区别

Oracle在创建序列(sequence)时有个参数你可以选择cache或者nocache,下面来讲一下两者的区别: 先来看下创建sequence的语句: create sequence SEQ_ID   minvalue 1   maxvalue 99999999   start with 1   increment by 1   cache n  / nocache  --其中n

学而时习之 3万+

【OpenCV3】cv::compare()使用详解

cv::compare()主要用于两个图像之间进行逐像素的比较,并输出比较的结果。具体用法如下: cv::compare() bool cv::compare( cv::InputArray src1, // 输入数组1 cv::InputArray src2, // 输入数组2 cv::OutputArray dst, // 输出数组 int cmpop // 比较操作子,见下表 ...

guduruyu的专栏 9762

R语言线性混合模型(LMM)分析

它将数据表示为固定效应和随机效应的线性组合,其中固定效应表示总体均值的影响,随机效应表示个体间的随机差异。LMM的目标是通过最大似然估计或最小二乘估计来估计模型中的固定效应和随机效应的参数。LMM结合了固定效应和随机效应,能够同时考虑个体间和个体内的变异,并适用于具有相关性的数据。目前在使用LMM的R语言包中,较常用的是lme4和nlme包,它们提供了丰富的函数和工具来拟合和分析线性混合模型。面板数据分析:LMM适用于分析具有面板结构的数据,如经济学中的面板数据或教育研究中的学生评估数据。

走向CTO的路上... 2972

Oracle序列sequence cache nocache、RAC

一、问题描述:新增了个表,上了生产环境之后,发现ID跳号且穿插,如图1所示。 而测试环境只是跳号,如图2所示。 图1 生产环境 图2 ...

开着奥迪卖小猪 4543

【Python爬虫教程】第3篇-解决使用reqeusts遇到的ProxyError异常

Python request代理错误提示“HTTPSConnectionPool, Cannot connect to proxy, no such file or directory”

分享技术,记录思考和感悟 1509

1oracle 自增长 2Oracle Sequence中Cache与NoCache的区别

一、oracle 自增长 ORACLE是不能用IDENTITY,可以用SEQUENCE oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。 1、Create Sequence 你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限,   CREATE SEQUENCE emp_sequ

zhangchencf的博客 1364

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Oracle序列(sequence)使用总结

前言: 我们都知道数据库表中的主键值有的时候我们会用数字类型的并且自增。mysql、sql server中的都可以使用工具创建表的时候很容易实现。但是oracle中没有设置自增的方法的工具,一般情况我们会使用序列和触发器来实现主键自增的功能。 序列: Sequence 是oracle提供的用于产生一系列唯一数字的数据库对象。由于oracle中没有设置自增列的方法,所以我们在oracle数据库中主要...

u014615041的博客 6626

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Oracle序列(Sequence)创建、使用、修改、删除

Oracle对象课程:序列(Sequence)创建、使用、修改、删除,序列(Sequence)是用来生成连续的整数数据的对象。序列常常用来作为主键中增长列,序列中的可以升序生成,也可以降序生成。创建序列的语法是: 语法结构:创建序列 CREATE SEQUENCE sequence_name [START WITH num] [INCREMENT BY increment] [MAXVA...

阿冰的博客 3497

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Oracle开发误区探索【三】(Sequence)

通过上述实验,我们可以明白,其实sequece要保证连续中间不断号是很困难的,如果我们是采用cache的形式,重启数据库或者内存被清空等情况都会导致缓存在cache中的连续号被清空,就产生断号了,其实即便我们不设置cache,比如设置了nocache的关键字,一样会丢失...

从底层逻辑去思考技术,去拥抱变化 1127

Oracle中Cache跟noCache的区别

Oracle在创建序列(sequence)时有个参数你可以选择cache或者nocache,下面来讲一下两者的区别: 先来看下创建sequence的语句: create sequence SEQ_ID   minvalue 1   maxvalue 99999999   start with 1   increment by 1   cache n  / nocache  -

jihaixiao8的专栏 978

Oracle:Sequence Cache 参数说明

公司上线一套RAC 系统。 Aston对Sequence 的 Cache 参数表示关注,建议并发大的系统对Cache设置大一点。 这样可以提高性能。 和Aston 讨论了一下。 又从网上查了一下。   RACLE SEQUENCE 介绍http://blog.youkuaiyun.com/tianlesoftware/archive/2009/10/30/4745039.aspx   之前整理的一篇...

卖掉裤子来上网 346

Oracle Sequence创建与使用

使用Oracle的sequence序列号,如何创建、修改、使用

Karloo的博客 1万+

Oracle序列创建和使用

Oracle序列创建和使用 创建序列 语法 CREATE SEQUENCE 序列名 [相关参数] 参数说明 INCREMENT BY :序列变化的步进,负值表示递减。(默认1) START WITH:序列的初始值 。(默认1) MAXvalue:序列可生成的最大值。(默认不限制最大值,NOMAXVALUE) MINVALUE:序列可生成的最小值。(默认不限制最小值,NOMINVALU

hu_dongyang的博客 10万+

Oracle中Sequence使用

Oracle提供了sequence对象,由系统提供自增长的序列号,通常用于生成数据库数据记录的自增长主键或序号的地方. 下面介绍一下关于sequence 的生成,修改,删除等常用的操作: 1. 创建 Sequence 使用如下命令新建sequence(用户需要有CREATE SEQUENCE 或者CREATE ANY SEQUENCE权限): CREATE SEQUENCE t...

abc12345670899的博客 3320

Oracle中序列(Sequence)详解

Oracle中序列(Sequence)详解 一序列定义 序列(SE...

小麦苗DBA宝典 8222

oracle表增加序列字段,oracle sequence的简单介绍(自增加字段)

例子 :create sequence S_A_EventID increment by 1 start with 34 maxvalue 999999999;在oracle中sequence就是所谓的序列号,每次取的时候它会自动增长,通常用在须要按序列号排序的地方。一、Create Sequence你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限,CREAT...

weixin_31058323的博客 1890
下一篇: Jupyter NoteBooks 初次使用小细节
wxianyou
博客等级 码龄9年 1粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值