Mysql总结三

MYSQL事务特点

事务定义:一个事务是由一条或者多条数据库操作的SQL语句组成的一个不可分割的单元,只有当事务的所有操作都正常执行完了,整个事务才会被提交给数据库,期间如果有部分事务处理失败,那么事务就要回退到最初的状态,因此,事务要么全部执行成功,要么全部失败。

事物的特征(ACID)

事务的原子性(Atomic)
事务是最小单元,不可再分,要么全部执行成功,要么全部失败回滚。
事务的一致性(Consistency)

  • 一致性是指事务必须使数据库从一个一致的状态变到另外一个一致的状态,也就是执行事务之前和之后的状态都必须处于一致 的状态。
  • 不一致性包含三点:脏读,不可重复读,幻读

事务的隔离性(Isolation)
隔离性是指当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所 干扰,多个并发事务之间要相互隔离
事务的持久性(Durability)
DBMS(数据库管理系统)对数据的修改是永久性的。
在这里插入图片描述

事务的使用

  • 事务查看:SELECT @@AUTOCOMMIT
  • 事务设置:SET AUTOCOMMIT
    可使用SET AUTOCOMMIT = 0操作;设置事务提交方式为手动提交事务

事务操作

  • 开启事务:BEGIN或 START TRANSACTION
  • 事务提交:commit
    当组成事务的所有sql语句都执行成功,调用commit提交一个事务
  • 事务回滚:ROLLBACK
    执行事务的过程中有一个事务失败,回滚一个事务到初始的位置
  • 保存点操作:SAVEPOINT point1
    SAVEPOINT point1; 设置一个名字为point1的保存点
    ROLLBACK TO point1; 事务回滚到保存点point1,而不是回滚 到初始状态
  • 产看事务的隔离级别:select @@tx_isolation

并发事务问题

在典型的应用程序中,多个事务并发运行,经常会操作相同的数据来完成各自的任务(多个用户对统一数据进行操作)。并发虽然是必须的,但可能会导致以下的问题:

脏读

A事务读取了B事务尚未提交的更改数据,并在这个读取的脏数据上进行操作。如果这时B事务恰巧进行了回滚事务,那么A事务读取的事务是不被承认的
如下取款事务和转账事务
在这里插入图片描述
就是说B事务还没进行提交操作A事务已经读取了修改之后的值,所以这样是不能被承认的。

不可重复读

不可重复读是指A事务读取了B事务已经提交的更改数据
<

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值