关于并发脏数据的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
timepast
V2EX    Java

关于并发脏数据的问题

  •  
  •   timepast
    idyllim 2013-07-25 15:13:26 +08:00 4686 次点击
    这是一个创建于 4527 天前的主题,其中的信息可能已经有所发展或是发生改变。
    hibernate spring mysql 查了资料 有hibernate乐观锁和mysql行级锁 等解决方式
    自己没有这方面的实战经验 发此贴 一是求解 而是讨论

    求一实战过效率高解决思路
    8 条回复    1970-01-01 08:00:00 +08:00
    nybux
        1
    nybux  
       2013-07-25 15:28:51 +08:00   1
    乐观,自己判断
    悲观,数据库锁定
    timepast
        2
    timepast  
    OP
       2013-07-25 15:41:27 +08:00
    @nybux 有必要同时加么? 比如说 程序里面用上 乐观锁 再用上mysql的行级锁?
    nybux
        3
    nybux  
       2013-07-25 16:30:43 +08:00
    没必要,悲观锁是肯定可以保证没有冲突的。但是会降低性能,因为这条记录被锁住了,其他人没法再读取这条记录了。
    乐观锁通过一定的算法保证当前库里面的记录是自己前面读出来的记录,比如加个版本号字段或者加个time字段,或者把所以字段都读出来,然后update的时候where都加上。
    plprapper
        4
    plprapper  
       2013-07-25 16:42:44 +08:00
    一般来说 乐观锁就够了
    timepast
        5
    timepast  
    OP
       2013-07-25 19:34:12 +08:00
    @nybux
    @plprapper

    悲观锁 确实会 降低效率 但是应该是能彻底解决此问题
    plprapper
        6
    plprapper  
       2013-07-25 23:10:47 +08:00
    至今没有碰到过乐观锁 搞不定 需要用悲观锁的这种 场景 。

    所以很难理解你所谓的 “彻底” 到底是啥含义。
    wodemyworld
        7
    wodemyworld  
       2013-07-26 00:30:35 +08:00
    @plprapper 那是你做的系统用的人太少,并发上不去,当并发去了,乐观锁会造成大量的存储过程rollback,并发越高,存储过程的长度就必须越短,最后恨不得改成一句,然后乐观锁慢慢成了事实上的悲观锁。。。。。

    @timepast 看你并发到什么程度吧,并发高到一定程度就不用hibernate了,自己去写做mapper,然后根据实际业务来决定哪些是悲观锁、哪些乐观锁,而且以后进行程序改动时,还得做业务影响分析,这块才是最头痛的东西。。。。
    pythonee
        8
    pythonee  
       2013-07-26 17:16:30 +08:00
    @wodemyworld
    这个高端,确实没有遇到过这个场景,这种应该是电信级别的吧
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5170 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 336ms UTC 07:45 PVG 15:45 LAX 23:45 JFK 02:45
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86