在实际业务处理,特别是在统计报表数据时,经常会遇到并发的情况。
在实际工作中,我遇到过类似的情况,大概情况是这样的:
在统计报表的时候需要,用户前台点击生成,当2个用户登陆,同时点击报表生成时,会出现报表数据重复的现在。这当然是,一个用户点击生成时,后台数据还没有完全跑完,然后有一个用户点击,又重新跑刚才的同一个过程,并且入参都一样,这就导致重复数据的出现。
现在想到一个处理方法如下:
create table tb_test (is_yx varchar2(1));
select t.is_yx into vi_result1
from tb_test t;
if vi_result1=1 then
loop
select t.is_yx into vi_result1
from tb_test t;
if vi_result1=1 then
select sysdate into start_time from dual;
loop
select sysdate into end_time from dual;
exit when (end_time-start_time)*24*60*60 >=60;
end loop;
else
exit;
end if;
end loop;
end if;
在过程里,处理数据前加上该段判断,紧接着
update tb_test t set t.is_yx=1;
commit;
数据处理完再做如下处理
update tb_test t set t.is_yx=0;
commit;
这样就可以一直等待该数据处理完再处理下一个
相关文章
- 07-13分布式分段锁 解决高并发情况锁导致请求处理慢的问题
- 07-13WCF服务在高并发情况下报目标积极拒绝的异常处理 z
- 07-13【PHP】PHP代码处理(普通/不重要的)并发情况,例如pv统计(不使用MySQL行或表锁、避免程序冗余)
- 07-13Oracle非默认监听的处理会遇到的问题以及处理方法
- 07-13【DB笔试面试666】在Oracle中,在高并发、高负载的情况下,如何给表添加字段并设置DEFAULT值?...
- 07-13C#编译器优化那点事 c# 如果一个对象的值为null,那么它调用扩展方法时为甚么不报错 webAPI 控制器(Controller)太多怎么办? .NET MVC项目设置包含Areas中的页面为默认启动页 (五)Net Core使用静态文件 学习ASP.NET Core Razor 编程系列八——并发处理
- 07-13C#编程高并发的几种处理方法
- 07-13《C#并发编程经典实例》学习笔记—2.9 处理 async void 方法的异常
- 07-13C#编程高并发的几种处理方法
- 07-13Linux系统编程(35)—— socket编程之TCP服务器的并发处理