MySql的事务是什么?什么是脏读?幻读?不可重复读?

事务:

       就是将一组SQL语句放在同一批次去执行,如果一个SQL语句出,则该同批次所有SQL语句都将被取消。

特点:一个事务中如果有一个数据库操作失败,则整个事务的所有数据库操作都会失败,数据库就会回滚到该事务开启之前的状态。

事务的ACID原则:

a.原子性:不可再分

b.一致性:事务开始之前和事务结束以后,数据库的完整约束没有被破坏

c.隔离性:事务执行互不干扰

d.持久性:事务完成以后,该事务对数据的更改持久保持在数据库中,并不会被回滚

MyAQL实现事务的步骤:

1.关闭MySQL自动提交

set autocommit=0;

2.开启一个事务,标记事务的起始点

start transaction;

3.向数据库提交事务

commit;

4.将事务回滚,所有的数据库操作被取消(提交和回滚互斥)

rollback;

5.开启MySQL自动提交

set autocommit=1;

MySQL的四种隔离级别:

a.Read Uncommitted(读取未提交内容)

易出现脏数据,读取未提交的数据,也被称之为脏读

b.Read Committed(读取提交内容/不可重复读)

       这是大多数数据库系统的默认隔离级别(但不是MySQL默认的)。它满足了隔离的简单定义:一个事务只能看见已经提交事务所做的改变。

 

c.Repeatable Read(可重复读)

       这是MySQL的默认事务隔离级别,它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行。幻读指当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户再读取该范围的数据行时,会发现有新的“幻影” 行。

 

 

d.Serializable(可串行化)

      这是最高的隔离级别,它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。简言之,它是在每个读的数据行上加上共享锁。在这个级别,可能导致大量的超时现象和锁竞争。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值