mysql不可重复读怎么实现的

作者:毕业通检测     发表时间:2023-01-07 20:14:15   浏览次数:146


问:如何保证多线程从mysql数据库查询的数据不重复
  1. 答:以mysql来说,可能出现脏读、不可重复读以及幻读,mysql默认设置是可重复读,即一次事务中不会读取到不同的数据。
    可以做如下操作:
    1)打开两个客户端,均设置为RR;
    2)在一个事务中,查询某个操作查到某份数据;比如是某个字段version=1存在数据;
    3)在另一个事务中,删除这份version=1的数据;删除后,在2所属的事务中查询数据是没有变化的,还是存在version=1的数据;
    4)当我们在2所属的事务中继续更新数据,那么会发现更新不了,明明我们就看到了这份version=1的数据;
    缓存一致性:
    缓存一致,与什么一致?是与数据库一致,对外查询每个时刻一致;所以在针对于缓存与数据库之间该先更新哪一个呢?可能有人觉得我先更新数据库,再更新缓存不就行了吗?但是有想过个问题吗?
    当用户已经支付成功了,更新到数据库,但是呢?你还在缓存中显示未支付,在用户点击频率很高并且数据库压力过大,来不及同步到缓存时,那你是不是很尴尬,这就是典型的不一致了。此时用户再支付,那你又告诉他已经支付了,那他会把你骂死的
    那该怎么来做呢?我们可以这样,先更新缓存再更新数据库,那么存在什么问题呢?
    1)缓存更新成功,但是数据库更新失败,而被其它的并发线程访问到
    2)缓存淘汰成功,但是数据库更新失败,这也会引发后期数据不一致
问:mysql是如何解决脏读,不可重复读,幻读
  1. 答:学习msyql隔离级别,事务,行排它锁,行共享锁,乐观锁,悲观锁即可
问:数据库中的不可重复读问题
  1. 答:在不可重复读里进行重复读操作,不一定有问题,这个由业务决定,实际上很多业务场景重复读不一样的数据,(后一次是最新数据)是对的,反而重复读取的数据一样的话是错的。
    当设置事务隔离级别为不可重复读时,在事务代码里是可以重复读操作的,这个看上去很矛盾, 就像十字路口竖立了一个牌子,上面写着“不可闯红灯”,但是其实你硬要闯也是可以的,那个提示只是告诉你有可能出现危险!这里一样的道理,在“不可重复读”等级下进行了重复读其实也是可以的,mysql本身不会因为你重复读强制报错或终止,但是可能会因为重复读导致问题,也有可能没有问题,并不是说一定会出错,有些场景,两次读不一样,第二次获取到的是最新的数据,确实可能是好的,反而有些场景重复读数据保持一样(明明后边数据被别的事务更新了)可能出错。
    至于哪些场景这样会有问题,我觉得应该是那种生成瞬时数据的场景,比如今天12:00:00网站访问量是1000,有个事务正要拿这个时间点的1000处理,然后返回生成一个报表,这个时候,另一个事务把这个1000改成了2000,但这个2000是12:00:01的访问量,这种场景,重复读就有问题,因为不精确了。但有的场景,比如只要求生成最新的报表,不要求时间,越新越好,这里重复读又没问题,还有类似余额处理,如果是像楼上说的刷卡场景,那种update 两次读取不一样(后边是最新数据)我觉得才是对的,所以需要根据业务场景,有了正确的隔离等级还要配合适当的代码才能决定是对还是错 。
  2. 答:编一个刷卡的场景吧,要付100块钱,你在一个事务里,select了一下某个帐号,发现它的余额100元足够,于是发起减余额的操作,做update XX set 余额=余额-100 where ....,结果在你update之前其它事务操作余额变成50了,update完变成-50了

最新查重新闻

毕业论文查重   论文查重新闻   论文查重资讯   学位论文查重   论文检测资讯   毕业论文查重资讯   论文检测新闻   论文查重中心   论文检测新闻  

本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时删除处理。

论文检测相关资讯

学术不端查重入口


检查语种:中文,英文,小语种 预计时间:3小时-72小时
系统说明硕博初稿检测(一般习惯叫做硕博预审版),论文查重检测上千万篇中文文献,超百万篇各类独家文献,超百万港澳台地区学术文献过千万篇英文文献资源,数亿个中英文互联网资源是全国高校用来检测硕博论文的系统,检测范围广,数据来源真实,检测算法合理!本系统含有(学术库与源码库)。(限制字符数30万)
检查范围硕士、博士论文初稿【误差一般在5%左右,不支持真伪验证】
498.00元/篇
立即体检
检查语种:中文,英文,小语种 预计时间:3小时-72小时
系统说明本科定稿查重版(一般习惯叫本科终评版),论文抄袭检测系统,专用于大学生专、本科等论文检测的系统,大多数专、本科院校使用此检测系统。(限制字符数6万)
检查范围专科/本科大学生论文
388.00元/篇
立即体检
检查语种:中文,英文 预计时间:60分钟
系统说明论文查重软件,维普论文检测系统:高校,杂志社指定系统,可检测期刊发表,大学生,硕博等论文。检测报告支持PDF、网页格式,性价比高!--不支持指定院校!!!
检查范围毕业论文、期刊发表
4.00元/千字
立即体检
检查语种:中文,英文 预计时间:60
系统说明学位论文查重,维普查重系统是国内知名数据公司。本系统含有硕博库、期刊库和互联网资源等。支持中文、英文、繁体、小语种论文检测,。--不支持指定院校!!!
检查范围博士/硕士论文检测
350.00元/篇
立即体检
检查语种:中文 预计时间:60分钟
系统说明万方职称论文检测系统,适用于职称发表/未发表论文查重,注:上传论文请标注发表日期,如无则使用论文正式发表时间;如未公开发表的,则用论文完成时间作为发表日期。
检查范围职称发表
6.00元/千字
立即体检
检查语种:中文,英文,小语种 预计时间:3小时-72小时
系统说明本科高校内测版查重系统,不含”大学生论文联合对比库“,是专科、本科毕业论文初稿、中稿修改查重首选!——不支持验证!!!
检查范围专科/本科大学生论文--【误差一般在3%左右,不支持真伪验证】
298.00元/篇
立即体检
检查语种:中文 预计时间:60分钟
系统说明论文检测网站,万方数据平台推出的万方查重系统是目前较为热门的检测系统。究其原因,万方数据通过近年的发展,在高校中也确立了自己的相应地位,特别是部分高校直接将其视为毕业检测系统,其真实性和权威性无可厚非。其次,相对于知网而言,万方检测费用少,上手容易,是学生初次论文查重的推荐系统。
检查范围毕业论文、期刊发表
4.00元/千字
立即体检
检查语种:中文 预计时间:60分钟
系统说明PaperPass检测系统是北京智齿数汇科技有限公司旗下产品,网站诞生于2007年,运营多年来,已经发展成为国内可信赖的中文原创性检查和预防剽窃的在线网站。 系统采用自主研发的动态指纹越级扫描检测技术,该项技术检测速度快、精度高,市场反映良好。
检查范围学位论文和学术期刊
3.00元/千字
立即体检
检查语种:中文,英文,小语种 预计时间:1小时-24小时
系统说明职称评审论文检测系统针对编辑部来稿,已发表的文献,学校、事业单位职称论文的检测!大部分杂志社用的文献抄袭检测系统。可检测抄袭与剽窃、伪造、篡改、不当署名、一稿多投等学术不端文献,学术不端论文查重可供期刊编辑部检测来稿和已发表的文献,检测结果和杂志社一致,已发表过的文章检测时注意填写第一作者,才能排除已发表文献复制比。(限制字符数1万)
检查范围投稿/发表/职称评审
3.00元/千字
立即体检
检查语种:中文 预计时间:80分钟
系统说明龙源期刊论文查重系统,自主研发高效稳定的计算服务,最快35S即可获得检测结果,大片段、长短句,不遗漏一处相似,区分论文中的正确引用参考文献。
检查范围期刊论文
4.00元/千字
立即体检
在线客服 返回顶部