MySQL事务

一.事务

     1.什么是事务?事务就是将一组操作,封装成一个执行单元,要么一块执行成功,要么一块失败,不会出现执行一般的情况。数据库引擎:InnoDB 才支持事务,MyISAM不支持事务。

       2.为什么要用事务?使用事务来控制,保证以上两句SQL 要么全部执行成功,要么全部执行失败

       3.使用:

             3.1开启事务:mysql 8 之前使用的是start transaction ,mysql之后使用的是begin

             3.2 提交事务:commit

             3.3 回滚事务:rollback

**注意:事务在开启之后,必须以提交事务或回滚事务来结束。**

4.四大特性(ACID):原子性,一致性,隔离性,持久性

5.隔离级别(4种)

       a.查询事务的隔离级别: select @@global.tx_isolation,@@tx_isolation;

       b.设置当前客户端的事务隔离级别:set session transaction isolation level 事务隔离级别;

       1. 读未提交  read uncommitted:在此隔离级别的事务中,可以读取其他事务未提交的数据,而未提交的数据如果发生了回滚操作,那么此事务读到的数据就是幽灵数据,也叫脏读

       2.读已提交 read committed :可以解决脏读的问题,但它纯在不可重复读的问题。不可重复读:使用相同的SQL,执行2次,得到了不同的结果,这个就叫做不可重复读。

       3.可重复读 repeatable read 它是MySQL 事务的默认隔离级别

****经典面试题:不可重复读和幻读有什么区别?***

答:不可重复读和幻读描述的侧重点是不同的,不可重复读描述的是修改操作,比如t1时间读取了一行数据,t2时间的时候读取到了这个数据,内容已经发生改变了,这个就叫做不可重复读;而幻读描述的是幻想行的问题,他是指,在t1时间使用一个sql 得到了n条数据,而在t2 时间使用相同的sql 却得到了n+1 条数据,那么多出来的这一条数据就叫做幻象行,而这个操作就叫做幻读,也就是说不可重复读描述的侧重点是修改操作,而幻读描述的侧重点是添加(或删除)操作。

**如果不存在幻读的问题,那么无论你怎么执行,都不会出现幻象行的,也就是不会出现多一条数据的问题的(使用相同的SQL)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值