mysql不可重复读怎么实现的

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


问:如何保证多线程从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元/千字
立即体检
检查语种:中文 预计时间:80分钟
系统说明龙源期刊论文查重系统,自主研发高效稳定的计算服务,最快35S即可获得检测结果,大片段、长短句,不遗漏一处相似,区分论文中的正确引用参考文献。
检查范围期刊论文
4.00元/千字
立即体检
检查语种:简体中文、英文 预计时间:60分钟
系统说明PaperTime论文查重系统,拥有海量的对比数据库,总收录超过9000万的学术期刊和学位论文以及一个超过10亿数量的互联网网页数据库组成,保证了比对源的专业性和广泛性。采用多级指纹对比技术结合深度语义发掘识别比对,利用指纹索引快速而精准地在云检测服务部署的论文数据资源库中找到所有相似的片段,该项技术检测速度快、准确率高,市场反映良好。
检查范围毕业论文、期刊发表
2.50元/千字
立即体检
在线客服 返回顶部