zoukankan      html  css  js  c++  java
  • 处理简单而一般的并发,治标不治本

    听同事说这项目是去年11月份启动的,到现在为止二期都没开发完,昨天今年因为要做改善,原本只要一个权限能进来操作数据的,但现在要求改成可以多个权限,这样就会导致数据并发。

          这2天没做别的,就在做并发处理,我写好一个测试组就测一个,测试不通过在打回来从新编写过。如此反复做了N次,今年终于搞定一大半,仍然还有几种情况没搞定。

       。写这篇是希望能和大家分享下我的想法,期待大家的提出更好的解决方案。 因现在在网吧无法贴代码,就先说下我的处理思路。

            权限A1 ,A2,A3,A4,A5,A6代表有6个权限,进入页面后要根据登陆者权限加载不同导航,但数据是一样都可以做修改操作。而且不能用数据库的事务和锁。因为这个项目比较特殊。原先就要3套系统在用这数据库,在加上现在的就是4套系统基于这数据库的。所以如果用数据库锁会在提交数据的时候会导致其他系统崩溃。想了很久,暂时找到了治标的办法没有治本,就是在表的上面加上一个字段记录没做一次更改就加1,在页面上用个hidden保存这个值,提交的时候做比较如果页面上的和数据库一致就可以提交,不一致就弹出一个msg提示,在从新刷新下页面这样就可以提交了。

      这种办法如果分前后就很好用,但最少2个以上权限同时登陆进入这个页面,而且还是同一条数据的时候并发就很高了,问题就出来了。发现都可以更改成功,向系统发送通知消息。

    今天我又想了个思路就是,新增一个临时表和上个表一模一样,操作的时候就读这个临时的当数据好了可以做临时的保存,等做好了后点提交就向真表写入这条数据,但这时又要考虑这次的数据输入有误想回到上一次,就要做个回滚数据功能,但就是这个如果都点登陆就会正常报msg只有一个人成功操作这数据,因为我在程序写了事务,执行完后count值就改变了另外的一个人就不能找到这条数据了,因为比较的时候都是同一时间进来hidden值一样但我还用它当条件此时就找不到了,但如果一人回滚一人提交此时就并发处理不出来了。

      这个问题困扰了我2天了,不知道各位是如何处理这样高并发的。

  • 相关阅读:
    浅谈几种筛法
    [jzoj]4271. 【NOIP2015模拟10.27】魔法阵(37种转移的dp)
    【gdoi2018 day2】第二题 滑稽子图(subgraph)(性质DP+多项式)
    礼物(中国剩余定理+拓展gcd求逆元+分治=拓展Lucus)
    【GDOI2016模拟3.15】基因合成(回文串+性质+DP)
    【NOIP2013模拟】终极武器(经典分析+二分区间)
    【GDOI2016模拟3.16】幂(容斥 + 模型复杂转化)
    Hbase-cdh5.14.2与kylin集成异常
    拉链表
    数仓分层的理解
  • 原文地址:https://www.cnblogs.com/jxluowei/p/2836444.html
Copyright © 2011-2022 走看看