千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:重庆千锋IT培训  >  技术干货  >  一分钟带你了解MySQL事务隔离级别

一分钟带你了解MySQL事务隔离级别

来源:千锋教育
发布人:lxl
时间: 2023-05-16 10:45:29

  一. 事务隔离级别

  什么是事务隔离级别呢?对我们的日常操作结果又有什么影响呢?下面健哥带各位小伙伴先来了解下事务隔离级别的概念。

  隔离级别的概念

  多个客户端操作时 ,各个客户端的事务之间应该是隔离的,相互独立的 , 不受影响的。

  如果多个事务操作同一批数据时,则需要设置不同的隔离级别 , 否则就会产生问题 。

  四种隔离级别

  我们先来了解一下四种隔离级别的名称 , 再来看看可能出现的问题。

事务隔离级别

  可能引发的问题

  下面健哥总结了数据库中不同事务隔离级别可能引发的问题。各位小伙伴可以参照下。

事务隔离级别

  数据库隔离级别操作语法

  查询数据库隔离级别:

  语法:SELECT @@TX_ISOLATION;

  修改数据库隔离级别:

  语法:SET GLOBAL TRANSACTION ISOLATION LEVEL 级别字符串;

  事务隔离级别演示

  举个栗子:脏读的问题。

-- 查询账户表
select * from account;

-- 设置隔离级别为read uncommitted
set global transaction isolation level read uncommitted;

-- 开启事务
start transaction;

-- 转账
update account set money = money - 500 where id = 1;
update account set money = money + 500 where id = 2;

-- 窗口2查询转账结果 ,出现脏读(查询到其他事务未提交的数据)

-- 窗口2查看转账结果后,执行回滚
rollback;

   举个栗子:解决脏读的问题和演示不可重复读的问题。

-- 设置隔离级别为read committed
set global transaction isolation level read committed;

-- 开启事务
start transaction;

-- 转账
update account set money = money - 500 where id = 1;
update account set money = money + 500 where id = 2;

-- 窗口2查看转账结果,并没有发生变化(脏读问题被解决了)

-- 执行提交事务。
commit;

-- 窗口2查看转账结果,数据发生了变化(出现了不可重复读的问题,读取到其他事务已提交的数据)

   举个栗子:解决不可重复读的问题。

-- 设置隔离级别为repeatable read
set global transaction isolation level repeatable read;

-- 开启事务
start transaction;

-- 转账
update account set money = money - 500 where id = 1;
update account set money = money + 500 where id = 2;

-- 窗口2查看转账结果,并没有发生变化

-- 执行提交事务
commit;

-- 这个时候窗口2只要还在上次事务中,看到的结果都是相同的。
-- 只有窗口2结束事务,才能看到变化(不可重复读的问题被解决)

   隔离级别总结

事务隔离级别

  注意:隔离级别从小到大安全性越来越高,但是效率越来越低 , 所以不建议使用READ UNCOMMITTED 和 SERIALIZABLE 隔离级别。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

如何进行mysql数据备份?

2023-05-30

从零开始学Java之Java中的内部类是怎么回事?

2023-05-29

什么是事件流以及事件流的传播机制 ?

2023-05-29

最新文章NEW

什么是servlet的生命周期?servlet请求处理流程是怎样的?

2023-05-30

在java中,super关键字怎样使用

2023-05-29

什么是JavaScript伪数组?

2023-05-25

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>