孤独侠客123 2013-03-03 18:12
浏览 280
已采纳

web处理“大数据”量能够采用什么方案?

场景:
一个彩票过滤网站, 用户使用文件上传自己的投注方案,最大控制在50w条[需要保留原始投注单],需要和网站系统的过滤集进行对比。

1.在过滤集内的,保存到投注单列表(TZD)
2.不在过滤集内的,保存到过滤单列表(GLD)
3.如果用户的原始单,有多条相同投注号,只能过滤掉一条,其它的全部保存到投注单(YSD)

需要注意的是:当用户上传自己的投注方案后,网站需要按照以上规则算出对应的数量,以及用户对应的需要支付的金额,当用户选择支付以后,才允许用户下载过滤后的投注单列表。

现在的问题是:
所有的过滤操作都使用sql在oracle里操作,这样用户量大的时候问题会很大,而且很多用户过滤后计算出金额并不支付,而这也占用了数据库的资源。
过滤的sql现在的性能也有比较大的问题,执行25万条原始单数据时就卡住了:

[code="java"]

begin update zc_ysd$qsbh$ a
set blbz = '1'
where fxdid = #fxdid#
and exists (select 1 from zc_bqglz$qsbh$ b where b.ysz = a.tzh);
update zc_ysd$qsbh$ a set blbz = '1'
where fxdid = #fxdid# and blbz='0'
and exists (select 1
from (select ROWID as RID,
row_number() over(partition by tzh order by rowid) as rn
from zc_ysd$qsbh$
where fxdid = #fxdid# and blbz='0') b
where b.rn > 1 and b.RID = a.rowid);
insert into zc_tzd$qsbh$
(ysdid, gh, tzh, rq, fxdid)
select ysdid, gh, tzh, rq, fxdid
from zc_ysd$qsbh$
where fxdid = #fxdid# and blbz = '1';
insert into zc_gld$qsbh$
(ysdid, gh, tzh, rq, fxdid)
select ysdid, gh, tzh, rq, fxdid
from zc_ysd$qsbh$
where fxdid = #fxdid# and blbz = '0';

update zc_tzglrz set jzsj=sysdate where qsbh='$qsbh$' and fxdid=#fxdid# and jzsj is null; end;

[/code]

  • 写回答

2条回答 默认 最新

  • jinbingchuan 2013-03-04 08:24
    关注

    可以参考spring batch

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同