Mysql的事务是什么?什么是脏读、幻读和不可重复读?

编程入门 行业动态 更新时间:2024-10-19 04:26:01

Mysql的<a href=https://www.elefans.com/category/jswz/34/1770772.html style=事务是什么?什么是脏读、幻读和不可重复读?"/>

Mysql的事务是什么?什么是脏读、幻读和不可重复读?

一、事务

         将一组sql语句放在同一批次内去执行,如果一个sql语句出错,则该批次内的所有sql都将被取消执行。

二、事务的隔离级别

1、原子性(Atomicity)

        事务包含的所有操作要么全部成功,要么全部失败,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。

2、一致性(Consistency)

        事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。

3、隔离性(Isolation)

        当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。

4、持久性(Durability)

        一个事务一旦被提交,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。

三、实现事务的方法和步骤

1.-- 关闭自动提交
set autocommit =0;

2.--开启事务
start transaction ;

--执行一组sql语句
update bank set bmoney=bmoney-1000 where bname='马智';
update bank set bmoney=bmoney+1000 where bname='刘鑫喵';

3.--结束事务
 --1.提交
        commit; --提交事务后 保存到磁盘 持久性 不会回流
 --2.全部回滚
        rollback;

4.--开启自动提交
set autocommit=1;

四、事务的隔离级别


Read Uncommited,读未提交:
一个事务可以读取另一个未提交事务的数据;并发操作会导致脏读

Read Commited,读操作:
即一个事务要等到另一个事务提交后才能读取数据;解决脏读问题;并发操作会导致不可重复读

Repeatable Read,重复读:
即开始读取数据(事务开启)时,不再允许修改操作;解决不可重复读问题;并发操作会导致幻读(对应insert操作)

Serializable,可串行化:
最高的事务隔离级别,该级别下,事务串行化顺序执行;避免脏读、不可重复读与幻读;但是该级别效率低下,比较消耗数据库性能(因为锁的存在),一般不用。

更多推荐

Mysql的事务是什么?什么是脏读、幻读和不可重复读?

本文发布于:2024-02-06 07:07:33,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1746923.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:事务   Mysql

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!