MySQL 事务相关总结

MySQL知识总结

在 Github 上查看

《MySQL是怎样运行的》知识总结

单表访问方法

表的连接原理

优化 基于查询成本的优化

优化需要的统计数据

优化 基于规则的优化

Explain详解

InnoDB缓冲区

事务

redo日志

undo 日志

MVCC原理

MySQL 锁

18 事务

数据库状态反映的是现实世界的状态,数据库的状态改变应该要符合现实世界的规则

事务应该具有的特性是:

  1. 原子性(使用undo 日志
  2. 隔离性
  3. 一致性
  4. 持久性(使用redo日志

原子性

事务是一个不可分割的操作单位,要么执行,要么不执行(事务包含一个或多个数据库的操作,数据库进行操作时,可能发生错误)

隔离性

事务之间应该是隔离的,不应该干扰其他事务(事务并发问题)

一致性

事务对数据库的修改是从一个一致性状态转换为另一个一致性状态。(一致性,数据库的数据应该要满足现实世界的约束)

数据库提供一部分的一致性,但更多的一致性需要靠程序员保证,一致性需求不应该交给数据库完成

MySQL支持使用check语法自定义约束,但MySQL不会对自定义约束进行检查

持久性

事务对数据库的修改应该是持久的(事务提交后,数据的修改应该保存至磁盘中,无论发生什么事故,都不应该丢失)

事务的状态

  1. 活动:事务正在执行
  2. 部分提交:事务执行了最后的操作,修改还在内存中
  3. 提交:事务的修改刷新到磁盘中
  4. 失败:执行事务时,人为终止或发生了错误
  5. 中止:事务发生错误后,对事务进行回滚

语法

begin;
# 执行操作
commit;# rollback

start transaction [read only, read write , with consistent snapshot];
# 执行操作
rollback;

InnoDB支持事务

其他

自动提交

MySQL有一个系统变量autocommit,默认开启,如果不显式使用begin等,开启事务,则每一条语句都是事务

隐式提交

  1. DDL语言
  2. 事务控制、锁定语句,开启另一个事务、锁定语句会提交前面的语句
  3. 加载数据的语句
  4. MySQL复制的一些语句:start slave
  5. 其他语句

保存点

使用保持点,可以在进行回滚时,回滚到指定的保持点,savepoint 名字rollback 名字

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值