mysql不可重复读怎么实现的
作者:毕业通检测 发表时间:2023-01-07 20:14:15 浏览次数:191
问:如何保证多线程从mysql数据库查询的数据不重复
- 答:以mysql来说,可能出现脏读、不可重复读以及幻读,mysql默认设置是可重复读,即一次事务中不会读取到不同的数据。
可以做如下操作:
1)打开两个客户端,均设置为RR;
2)在一个事务中,查询某个操作查到某份数据;比如是某个字段version=1存在数据;
3)在另一个事务中,删除这份version=1的数据;删除后,在2所属的事务中查询数据是没有变化的,还是存在version=1的数据;
4)当我们在2所属的事务中继续更新数据,那么会发现更新不了,明明我们就看到了这份version=1的数据;
缓存一致性:
缓存一致,与什么一致?是与数据库一致,对外查询每个时刻一致;所以在针对于缓存与数据库之间该先更新哪一个呢?可能有人觉得我先更新数据库,再更新缓存不就行了吗?但是有想过个问题吗?
当用户已经支付成功了,更新到数据库,但是呢?你还在缓存中显示未支付,在用户点击频率很高并且数据库压力过大,来不及同步到缓存时,那你是不是很尴尬,这就是典型的不一致了。此时用户再支付,那你又告诉他已经支付了,那他会把你骂死的
那该怎么来做呢?我们可以这样,先更新缓存再更新数据库,那么存在什么问题呢?
1)缓存更新成功,但是数据库更新失败,而被其它的并发线程访问到
2)缓存淘汰成功,但是数据库更新失败,这也会引发后期数据不一致
问:mysql是如何解决脏读,不可重复读,幻读
- 答:学习msyql隔离级别,事务,行排它锁,行共享锁,乐观锁,悲观锁即可
问:数据库中的不可重复读问题
- 答:在不可重复读里进行重复读操作,不一定有问题,这个由业务决定,实际上很多业务场景重复读不一样的数据,(后一次是最新数据)是对的,反而重复读取的数据一样的话是错的。
当设置事务隔离级别为不可重复读时,在事务代码里是可以重复读操作的,这个看上去很矛盾, 就像十字路口竖立了一个牌子,上面写着“不可闯红灯”,但是其实你硬要闯也是可以的,那个提示只是告诉你有可能出现危险!这里一样的道理,在“不可重复读”等级下进行了重复读其实也是可以的,mysql本身不会因为你重复读强制报错或终止,但是可能会因为重复读导致问题,也有可能没有问题,并不是说一定会出错,有些场景,两次读不一样,第二次获取到的是最新的数据,确实可能是好的,反而有些场景重复读数据保持一样(明明后边数据被别的事务更新了)可能出错。
至于哪些场景这样会有问题,我觉得应该是那种生成瞬时数据的场景,比如今天12:00:00网站访问量是1000,有个事务正要拿这个时间点的1000处理,然后返回生成一个报表,这个时候,另一个事务把这个1000改成了2000,但这个2000是12:00:01的访问量,这种场景,重复读就有问题,因为不精确了。但有的场景,比如只要求生成最新的报表,不要求时间,越新越好,这里重复读又没问题,还有类似余额处理,如果是像楼上说的刷卡场景,那种update 两次读取不一样(后边是最新数据)我觉得才是对的,所以需要根据业务场景,有了正确的隔离等级还要配合适当的代码才能决定是对还是错 。 - 答:编一个刷卡的场景吧,要付100块钱,你在一个事务里,select了一下某个帐号,发现它的余额100元足够,于是发起减余额的操作,做update XX set 余额=余额-100 where ....,结果在你update之前其它事务操作余额变成50了,update完变成-50了
最新查重新闻
毕业论文查重 论文查重新闻 论文查重资讯 学位论文查重 论文检测资讯 毕业论文查重资讯 论文检测新闻 论文查重中心 论文检测新闻本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时删除处理。
论文检测相关资讯
学术不端查重入口
检查语种:中文,英文
预计时间:60
系统说明学位论文查重,维普查重系统是国内知名数据公司。本系统含有硕博库、期刊库和互联网资源等。支持中文、英文、繁体、小语种论文检测,。--不支持指定院校!!!
检查范围博士/硕士论文检测
350.00元/篇
立即体检
检查语种:中文
预计时间:60分钟
系统说明万方职称论文检测系统,适用于职称发表/未发表论文查重,注:上传论文请标注发表日期,如无则使用论文正式发表时间;如未公开发表的,则用论文完成时间作为发表日期。
检查范围职称发表
6.00元/千字
立即体检
检查语种:中文
预计时间:60分钟
系统说明PaperPass检测系统是北京智齿数汇科技有限公司旗下产品,网站诞生于2007年,运营多年来,已经发展成为国内可信赖的中文原创性检查和预防剽窃的在线网站。 系统采用自主研发的动态指纹越级扫描检测技术,该项技术检测速度快、精度高,市场反映良好。
检查范围学位论文和学术期刊
3.00元/千字
立即体检
检查语种:中文,英文,小语种
预计时间:1小时-24小时
系统说明职称评审论文检测系统针对编辑部来稿,已发表的文献,学校、事业单位职称论文的检测!大部分杂志社用的文献抄袭检测系统。可检测抄袭与剽窃、伪造、篡改、不当署名、一稿多投等学术不端文献,学术不端论文查重可供期刊编辑部检测来稿和已发表的文献,检测结果和杂志社一致,已发表过的文章检测时注意填写第一作者,才能排除已发表文献复制比。(限制字符数1万)
检查范围投稿/发表/职称评审
3.00元/千字
立即体检
检查语种:中文
预计时间:80分钟
系统说明龙源期刊论文查重系统,自主研发高效稳定的计算服务,最快35S即可获得检测结果,大片段、长短句,不遗漏一处相似,区分论文中的正确引用参考文献。
检查范围期刊论文
4.00元/千字
立即体检