登录
首页 >  数据库 >  MySQL

Just for fun——MySQL事务的隔离级别

来源:SegmentFault

时间:2023-01-25 08:02:00 199浏览 收藏

在数据库实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天golang学习网就整理分享《Just for fun——MySQL事务的隔离级别》,聊聊MySQL、Mysql索引,希望可以帮助到正在努力赚钱的你。

事务的隔离级别

数据库事务的隔离级别有4个,由低到高依次为Read Uncommitted(RU)、Read Committed(RC)、Repeatable Read(RR)、Serializable,这四个级别可以逐个解决脏读、不可重复读、幻读这几类问题。
√: 可能出现 ×: 不会出现

** 脏读 不可重复读 幻读
Read uncommitted
Read committed ×
Repeatable read × ×
Serializable × × ×

MySQL事务(InnoDB)的默认隔离级别为RR,另外MySQL通过MVCC(多版本并发控制)技术解决了环读的问题。

然后我们来看个简单而Happy的小栗子:

原料

CREATE TABLE `user` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', 'wang');
INSERT INTO `user` VALUES ('2', 'meng');
INSERT INTO `user` VALUES ('3', 'salamander');

操作

Client 1
开启事务后查询数据

clipboard.png

Client 2
开启事务,改变数据

clipboard.png

然后在Client 1中再次查询

clipboard.png

发现查询数据还是不变

Client 2提交事务

clipboard.png

再次在Client 1中查询数据

clipboard.png

发现查询数据还是不变,(~。。~)

然后,你可以想象了,为什么这样呢?

今天关于《Just for fun——MySQL事务的隔离级别》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于mysql的内容请关注golang学习网公众号!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表