我是靠谱客的博主 落寞火车,最近开发中收集的这篇文章主要介绍mysql事务不会出现幻读_如何理解 MySQL 事务中的不可重复读和幻读问题?,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

刚好学习一下这个,我就粗浅的来说说我的想法:

Read Committed(不可重复读):

假设事务1读取了一条记录(select user_name from user where user_id = 1),得到user_name = '456',事务1暂时没提交。事务2更新了一条记录(update user set user_name = '123' where user_id = 1),事务2提交。此时事务1再次select user_name from user where user_id = 1得到了user_name = '123',这样就导致事务1在读取同一行数据却得到不同的user_name。这就是所谓的不可以重复读

Repeatable Read(可重复读,会产生幻读):

这个跟不可重复读相反,当事务1查询到user_name='456'时,事务2将user_name更新成'123'并提交,事务1再次查询还是会发现user_name='456',这样保证了可重复读。幻读的话就是当事务2插入一条新的数据id为2并提交,事务1由于可重复读的性质,只能在表中查到id为1的数据,如果此时事务1插入id为2的数据则会产生错误,因为此时表中已经有了id为2的数据,但是事务1只看到了id为1的数据。

最后

以上就是落寞火车为你收集整理的mysql事务不会出现幻读_如何理解 MySQL 事务中的不可重复读和幻读问题?的全部内容,希望文章能够帮你解决mysql事务不会出现幻读_如何理解 MySQL 事务中的不可重复读和幻读问题?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部