MySQL----事务

MySQL 事务主要用于处理操作量大,复杂度高的数据。比如,在学校管理系统中,我们删除一个学生,既需要删除学生的基本资料,也要删除和该学生相关的信息,如班级,考试成绩等等,这样,这些数据库操作语句就构成一个事务!

事务

在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。
一个事务是由一条或者多条对数据库操作的SQL语句所组成的一个不可分割的单元,只有当事务中的所有操作都正常执行完了,整个事务才会被提交给数据库;如果有部分事务处理失败,那么事务就要回退到最初的状态,因此,事务要么全部执行成功,要么全部失败。

事务的特点:

  1. 事务是一组SQL语句的执行,要么全部成功,要么全部失败,不能出现部分成功,部分失败的结果。保证事务执行的原子操作。
  2. 事务的所有SQL语句全部执行成功,才能提交(commit)事务,把结果写回磁盘上。
  3. 事务执行过程中,有的SQL出现错误,那么事务必须要回滚(rolback)到最初的状态。

相关术语

  • BEGIN; 开启一个事务
  • COMMIT; 提交一个事务
  • ROLLBACK; 回滚一个事务到初始的位置
  • SAVEPOINT point1; 设置一个名字为point1的保存点
  • ROLLBACK TO point1; 事务回滚到保存点point1,而不是回滚到初始状态
  • SET TX_ISOLATION=‘REPEATABLE-READ’; 设置事务的隔离级别
  • SELECT @@ TX_ISOLATION; 查询事务的隔离级别
  • redo log:重做日志保证数据库中的数据的修改是永久性的,即使数据库因为故障出错,也应该能够恢复数据!
  • undo log: 回滚日志。

查看/修改提交状态

select @@autocommit;

如果是1,就是自动提交;如果我们涉及了事务就要改为手动提交;

select autocommit=0;

事务的ACID特性

  • 事务的原子性(Atomic):
    事务是一个不可分割的整体,事务必须具有原子特性,及当数据修改时,要么全执行,要么全不执行,即不允许事务部分的完成。

  • 事务的一致性(Consistency):
    一个事务执行之前和执行之后,数据库数据必须保持一致性状态。数据库的一致性状态必须由用户来负责,由并发控制机制实现。就拿网上购物来说,你只有让商品出库,又让商品进入顾客的购物车才能构成一个完整的事务。

  • 事务的隔离性(Isolation):
    当两个或者多个事务并发执行时,为了保证数据的安全性,将一个事物内部的操作与其它事务的操作隔离起来,不被其它正在执行的事务所看到,使得并发执行的各个事务之间不能互相影响。有四个隔离级别:
    读未提交:read uncommitted
    读已提交:read committed
    可重复读:repeatable read
    串行化:serializable

  • 事务的持久性(Durability):
    事务完成(commit)以后,DBMS保证它对数据库中的数据的修改是永久性的,即使数据库因为故障出错,也应该能够恢复数据!

总结:

  • ACD:是由mysql的redo log和undo log机制来保证的;
  • I:隔离性,是由mysql实物的锁机制来实现保证的。

mysql最重要的是日志,不是数据!!!这也是为什么能够实现回滚,提交以后宕机了还能保证数据一致性

  • 19
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值