首页 / MYSQL / MySql数据库的事务隔离级别学习
MySql数据库的事务隔离级别学习
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySql数据库的事务隔离级别学习,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1497字,纯文字阅读大概需要3分钟。
内容图文
![MySql数据库的事务隔离级别学习](/upload/InfoBanner/zyjiaocheng/863/e465d2c491fa4633ac7ba84f98384513.jpg)
一、Mysql事务的隔离级别分为
- 读未提交
- 读已提交
- 可重复读
- 串行化
1、读未提交
事务A可以读取到事务B未提交的数据
设置MySql数据库的隔离级别
set SESSION TRANSACTION ISOLATION LEVEL READ uncommitted
查看当前数据库事务隔离级别
select @@tx_isolation;
客户端A使用事务查询数据
BEGIN SELECT * FROM tb_demo
查询结果
客户端B使用事务更新(并未提交事务)
BEGIN update tb_demo set math = 4000
客户端A再次查询得到结果,可以发现A可以查询到B未提交的数据
读未提交会产生幻读,不可重复读,脏读的问题
2、读已提交
设置事物的隔离级别为读已提交
set SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED
客户端A使用事务查询数据
BEGIN SELECT * FROM tb_demo
查询结果
客户端B使用事务更新(并未提交事务)
BEGIN update tb_demo set math = 100
客户端A再次查询得到结果,可以发现A查询不到B未提交的数据
客户端B提交事务
COMMIT
客户端A再次查询结果(客户端A能够读取到B已经提交的数据)
读已提交可以解决脏读 存在不可重复读,幻读问题
3、可重复读
设置数据库的隔离级别
set session TRANSACTION ISOLATION LEVEL REPEATABLE read
客户端A查询数据
begin select * from tb_demo
客户端B更新数据
BEGIN update tb_demo set math = 100
此时使用客户端A查询数据(数据为之前查询到的数据)
select * from tb_demo
客户端B提交事务
commit
此时使用客户端A再次查询数据(数据依然为之前查询到的数据)在整个事务中读取到的数据不会改变,所以称为可重复读
select * from tb_demo
可重复读解决脏读,不可重复读问题,存在幻读问题
4、串行化
客户端B需等待客户端A事务完成提交后才可继续进行。是完整的隔离级别,会锁定对应的数据表格,因而会有效率的问题。
内容总结
以上是互联网集市为您收集整理的MySql数据库的事务隔离级别学习全部内容,希望文章能够帮你解决MySql数据库的事务隔离级别学习所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。