MySQL事务

一.事物机制(Transaction)

1.避免写入直接操作数据文件
如果数据的写入直接操作数据文件是非常危险的事情
在这里插入图片描述

2.利用日志来实现间接写入
MySQL总共有6种日志,其中只有redo日志和undo日志与事务有关
在这里插入图片描述

3.事务机制(Transaction)
RDBMS = SQL语句+事务(ACID)
事务是一个或者多个SQL语句组成的整体,要么全部执行成功,要么全都执行失败
4.事务案例
在这里插入图片描述

5.管理事务
默认情况下,MySQL执行每条SQL语句都会自动开启和提交事务
为了让多条SQL语句纳入到一个事务之下,可以手动管理事务
[图片]
事务 Transaction
开启事务 Begin(Start)Transaction
提交事务 Commit Transaction
回滚事务 Rollback Transaction
结束事务 End Transaction
6.事务的ACID属性

  1. 原子性(Atomicity)
    原子性:事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。
  2. 一致性(Consistency)
    不管在任何给定的时间、并发事务有多少,事务必须保证运行结果的一致性。
    eg:a,b两个对象,a向b转账,a减少100元的同时b增加100元,两个对象是一致的,不能只有a减少100元,b没有任何操作,这样就不一致了。
  3. 隔离性(Isolation)
    一个事务要操作的数据,另一个事物无法操作,并发执行的各个事物之间不能相互干扰。
    事务的隔离性是通过事务的隔离级别实现的,而事务的隔离级别则是通过锁机制实现的。
  4. 持久性(Durability)
    事务一旦提交,结果便是永久性的。即便发生宕机,仍然可以依靠事务日志完成数据的持久化
    7.事务三个问题
    脏读:对应的是update操作:事务未提交,前后查询字段结果不一致
    不可重复:对应的是update操作:事务提交,前后查询字段结果不一致
    幻读:对应的是insert操作:事务提交,前后查询记录结果一致,新记录无法被查到

幻读(phantom read):同一个事务内,两条相同的查询语句应该相同,但是,如果另一个事务同时插入了新的记录,当本事务更新时,出现了后一次查询出现了新的记录,这就导致了幻读。
幻读就是没有读到的记录,以为不存在,但其实是可以更新成功的,并且,更新成功后,再次读取,就出现了。
例子:
客户机A插入新记录,但是还没有提交或回滚,此时打开客户机B此一次查询该表的记录,客户机B读取到的表记录为原始状态的表记录,但是当客户机A提交后,客户机B第二次查询该表的记录,依然查不到新增加的表记录,但是客户机B将新记录再次插入,会发生无法插入的现象,说明新记录已经存在,客户机B查询不到的现象,这就是幻读现象。

8.事务的四个隔离级别
在这里插入图片描述

1.Read uncommitted(读取未提交数据)
代表可以读取其他事务未提交的数据
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

2.Read committed(读取已提交数据)
代表只能读取其他事务提交的数据,一个事务职能看见已提交的事务所做的改变
SET SESSION TRANSACTION ISOLATION LEVELREAD COMMITTED;

3.Repeatable read(重复读取)
代表事务在执行中反复读取数据,得到的结果是一致的,不会受其他事务影响
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
4.事务的序列化(序列化)
由于事务并发执行所带来的各种问题,前三种隔离级别只适用在某些业务场景中,但是序列化的隔离性,让事务逐一执行,就不会产生上述问题了。
SET SESSION TRANSACTION ISOLAT工ON LEVEL SERIALIZABLE;
在这里插入图片描述

数据导出与备份的区别
数据导出,导出的纯粹是业务数据
数据备份,备份的是数据文件、日志文件、索引文件等等
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏日一凉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值