一些关于MySQL事务的基础知识


下面讲讲关于MySQL事务的基础知识,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完MySQL事务的基础知识这篇文章你一定会有所受益。一个事务所涉及到的命令如下:事务在提交之前对其他事务可不可见。事务中修改没有提交对其他事务也是可见的,俗称脏读。接下来需要自行开启两个MySQL会话终端,A和B,并且都执开发云主机域名行以下命令设置为未提交读。客户端A:总结:以上可以看出未提交读隔离级别非常危险,对于一个没有提交事务所做修改对另一个事务是可见状态,出现了脏读!非特殊情况不建议使用此级别。多数数据库系统默认为此级别(MySQL不是)。已提交读级别为一个事务只能已提交事务所做的修改,也就是解决了未提交读的问题。客户端A插入数据测试:客户端B查看(不会看到客户端A插入的数据):客户端A进行提交:客户端B进行查看(就可以看到A插入的数据了):总结:从上面可以看出,提交读没有了未提交读的问题,但是我们可以看到客户端A的一个事务中执行了两次同样的SELECT语句,得到不同的结果,因此已提交读又被称为不可重复读。同样的筛选条件可能得到不同的结果。可重复读解决了不可重复读的问题,数据库级别没有解决幻读的问题。以下是客户端A和客户端B同时操作(都设置为可重复读,然后两边都开启一个事务):客户端A:客户端B:总结:上面可以看出,可重复读两次读取的内容不一样。数据库的幻读问题并没有得到解决。幻读只读锁定里面的数据,不能读锁定外的数据,解决幻读出了mvcc机制Mvcc机制。是最高隔离级别,强制事务串行执行,执行串行了也就解决问题了,这个只有在对数据一致性要求非常严格并且没有并发的情况下使用。在客户端A及客户端B进行以下操作(设置为可串行读):客户端A:客户端B:对于以上MySQL事务的基础知识相关内容,大家还有什么不明白的地方吗?或者想要了解更多相关,可以继续关注我们的行业资讯板块。

相关推荐: 常用的 19 条 MySQL 优化

做MySQL优化,我们要善用 EXPLAIN 查看SQL执行计划。下面来个简单的示例,标注(1,2,3,4,5)我们要重点关注的数据 MySQL对于IN做了相应的优化,即将IN中的常量全部存储在一个数组里面,而且这个数组是排好序的。但是如果数值较多,产生的消耗…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 06/07 22:42
下一篇 06/07 22:42

相关推荐