MySQL数据库索引、事务和存储引擎(二)

事务的概念

  • 是一种机制、一个操作序列,包含了一组数据库操作命令,并且把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么执行,要么都不执行。
  • 是一个不可分割的工作逻辑单元,在数据库系统上执行并发操作时,事务是最小的控制单元。
  • 适用于多用户同时操作的数据库系统的场景,如银行、保险公司及证券交易系统等等。
  • 通过事务的整体性以保证数据的一致性。

事务的ACID特点

原子性 (Atomicity)

  • 事务是一个完整的操作,事务的各元素是不可分的
  • 事务中的所有元素必须作为一个整体提交或回滚
  • 如果事务中的任何元素失败,则整个事务将失败

一致性 (Consistency)

  • 当事务完成时,数据必须处于一致状态
  • 在事务开始前,数据库中存储的数据处于一致状态
  • 在正在进行的事务中,数据可能处于不一致的状态
  • 当事务成功完成时,数据必须再次回到已知的一致状态

隔离性 (Consistency)

  • 对数据进行修改的所有并发事务是彼此隔离的,表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务
  • 修改数据的事务可在另一个使用相同数据的事务开始之前访问这些数据,或者在另一个使用相同数据的事务结束之后访问这些数据

持久性 (Durability)

  • 指不管系统是否发生故障,事务处理的结果都是永久的
  • 一旦事务被提交,事务的效果会被永久地保留在数据库中

事务控制语句

  • MySQL事务默认是自动提交的,当SQL语句提交时事务便自动提交
  • 事务控制语句
语句注解
begin或start transaction事务的开始,下面的语句将不会被自动提交
commit前面没问题,将会提交所有的操作
rollback回到指定的断点处,用回滚 rollback to 断点名,回滚后后操作的就不存在了
savepoint identifier设置断点(存档点)
release savepoint identifier删除存档点
rollback to dientifier设置存档点名称
set transaction对一些属性的设置

事务的控制方法

手动对事物进行控制的方法

  • 事务处理命令控制事务
    • bebin:开始一个事务
    • commit:提交一个事务(一次性)
    • rollback:回滚一个事务
  • 使用set命令进行控制
    • set autocommit=0:禁止自动提交(等同于开始一个事务)
    • set autocommit=1:开启自动提交(等同于提交一个事务(长期有效))

COMMIT是表示【提交】
就是提交事务的所有操作。
具体地说,就是将事务中的所有对数据库的更新写回到磁盘上的物理数据库中去,事务正常结束。
ROLLBACK指的是【回滚】
即是在事务的运行过程中,发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有的已完成的操作全部撤销,回滚到事务开始之前的状态。

总结:
如果想后面操作被自动保存,就开启自动提交 set autocommit=1

案例

银行转账

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值