【oracle】高并发量表更新注意点

一个业务高并发,接入一个客户电话就发一个特殊邀请码(码为字符加数字混编,无规律),码已存表,业务上要 邀请码和用户手机号码一一对应;
所以,来个用户就得对未标记的码更新手机号码;高并发时,行锁及等待比较耗时,导致数据库性能下降严重;更新的操作都在存储过程中。

所以,不改动程序在数据库层解决此问题的办法就是:

解决办法,
码表增加seqid,字段;导入数据时使用rownum,做该字段值,建索引;
更新时,使用序列,

CREATE SEQUENCE SQ_U_SEQ INCREMENT BY 1 START WITH 1 MAXVALUE 50000000 CYCLE CACHE 2000 NOORDER;
更新则:update ... where ... and t.seqid = SQ_U_SEQ.nextval ...;
以后有新的数据要导入,则序列需重置,则:

create or replace procedure seq_reset(v_seqname varchar2) as n number(10);
tsql varchar2(100);
 begin
 execute immediate ‘select ‘||v_seqname||‘.nextval from dual‘ into n;
  n:=-(n-1);
  tsql:=‘alter sequence ‘||v_seqname||‘ increment by ‘|| n;
  execute immediate tsql;
 execute immediate ‘select ‘||v_seqname||‘.nextval from dual‘ into n;
  tsql:=‘alter sequence ‘||v_seqname||‘ increment by 1‘;
 execute immediate tsql;
 end seq_reset;

另外,高并发时序列的cache要设置大点,一般业务设置100以上,但nocache的时候性能确实很差,最大相差20倍. 排序参数:oracle默认是NOORDER,如果设置为ORDER;在单实例环境没有影响,在RAC环境此时,多实例实际缓存相同的序列,此时在多个实例并发取该序列的时候,会有短暂的资源竞争来在多实例之间进行同步。因次性能相比noorder要差,所以RAC环境非必须的情况下不要使用ORDER,尤其要避免NOCACHE ORDER组合;

时间: 2024-10-30 11:50:31

【oracle】高并发量表更新注意点的相关文章

提升高并发量服务器性能解决思路

刚刚在网上淘了一个提升高并发量服务器性能解决思路,个人感觉非常不错,给大家分享出来,希望给您有所帮助. 提升高并发量服务器性能解决思路 一个小型的网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构.性能的要求都很简单.随着互联网业务的不断丰富,网站相关的技术经过这些年的发展,已经细分到很细的方方面面,尤其对于大型网站来说,所采用的技术更是涉及面非常广,从硬件到软件.编程语言.数据库.WebServer.防火墙等各个领域都有

大流量高并发量网站的之解决方案

一.对于网站访问速度影响的条件如下: 瓶颈主要有: 1.磁盘搜索 优化方法是:将数据分布在多个磁盘上 2.磁盘读/写 优化方法是:从多个磁盘并行读写. 3.CPU周期 优化方法:扩充内存 4.内存带宽 二.大流量高并发量网站的解决方案 1.确认服务器硬件是否足够支持当前的流量. 2.使用memcache缓存技术,将动态数据缓存到内存中,动态网页直接调用这些文件,而不必在访问数据库. 3.禁止外部的盗链. 4.外部网站的图片或者文件盗链往往会带来大量的负载压力,因此应该严格限制外部对自身图片或者文

针对web高并发量的处理

针对web高并发量的处理 针对高并发量的处理 一个老生常谈的话题了 至于需要运维支持的那些cdn.负载均衡神马的就不赘述了 你们都懂的 虫子在此博文只讲一些从程序角度出发的一些不错的解决方案. 至于从数据库角度的性能方案.虫子另开博文. 1. 首推静态化 推荐指数五颗星 满星五颗 只要是大型互联网应用基本上离不开这个概念,IIS自带的伪静态化不谈,但是想做好静态化并不是一个容易的过程 动态和静态之间的取舍需要用一个平衡的战略眼光来看待 举个例子 当初在盛大游戏的时候 遭遇永恒之塔aion上线,悲

高并发量网站解决方案

一个小型的网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构.性能的要求都很简单.随着互联网业务的不断丰富,网站相关的技术经过这些年的发展,已经细分到很细的方方面面,尤其对于大型网站来说,所采用的技术更是涉及面非常广,从硬件到软件.编程语言.数据库.WebServer.防火墙等各个领域都有了很高的要求,已经不是原来简单的html静态网站所能比拟的. 大型网站,比如门户网站,在面对大量用户访问.高并发请求方面,基本的解决方案

Web网站高并发量的解决方案

摘要: ??一个小型的网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构.性能的要求都很简单.随着互联网业务的不断丰富,网站相关的技术经过这些年的发展,已经细分到很细的方方面面,尤其对于大型网站来说,所采用的技术更是涉及面非常广,从硬件到软件.编程语言.数据库.WebServer.防火墙等各个领域都有了很高的要求,已经不是原来简单的html静态网站所能比拟的.??大型网站,比如门户网站,在面对大量用户访问.高并发请求方面,

大流量高并发量网站的解决方案

1,首先检查硬件配置是否够用,包括cpu,内存,网卡,磁盘,如果不行就只能增加配置: 2,可以使用浏览器缓存机制,将一些用户的请求的数据缓存在客户浏览器上,这样可以解决单个用户重复操作所产生的负载: 3,可以使用静态页面缓存技术将我们需要显示的一些不经常更换的页面缓存起来,一般使用的是文件缓存,但是应该注意缓存文件时单个目录下面不能有有太多的缓存文件,否则会加大对目录的遍历操作,这样会占用大大的cpu资源. 4,可以做缓存查询,很多php框架都支持缓存查询,将一些不是经常变化的数据做一个缓存查询

高并发量的数据处理方案

需求描述: 有5000台左右的设备,每台设备每隔一分钟就会向服务器端上报设备的信息(如设备所在位置经纬度等),现在需要服务端对这些上报请求传输的数据进行处理,并持久化到数据库中: 需求就这样简单,但服务端要处理的并发还是不小的,平均每秒种都会有将近100个请求过来,遇到这样的情况,你会怎么做呢? 我的解决方案是,使用了缓存+批处理操作,代码如下: package com.jimu.data.servlet; import org.apache.log4j.Logger; import com.j

测试网站的高并发量访问压力

JMeter网站并发性测试 Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域. 它可以用于测试静态和动态资源例如静态文件.Java小服务程序.CGI脚本.Java 对象.数据库, FTP服务器, 等等.JMeter 可以用于对服务器.网络或对象模拟巨大的负载,来在不同压力类别下测试它们的强度和分析整体性能.另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序

怎样彻底解决支付系统资金账户高并发引起的表死锁问题?

作者:bright 链接:https://www.zhihu.com/question/59914547/answer/170671680 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 路过,本人从事支付系统搭建和运营工作,业内合作过多套大型互联网交易平台.简单说下自己的看法.---------------------------------------------------------------------------------------------