avatar

MySQL中的事物

什么是事物

​ 在实际的开发过程中,一个业务操作如:转账,往往是要多次访问数据库才能完成的。转 账是一个用户扣钱,另一个用户加钱。如果其中有一条 SQL 语句出现异常,这条 SQL 就可能执行失败。 事务执行是一个整体,所有的 SQL 语句都必须执行成功。如果其中有 1 条 SQL 语句出现异常,则所有的 SQL 语句都要回滚,整个业务执行失败

​ MySQL默认开启事物,ORACLE默认关闭事物

事物的四大特性

  • 原子性(Atomicity)
    每个事务都是一个整体,不可再拆分,事务中所有的 SQL 语句要么都执行成功, 要么都失败。

  • 一致性(Consistency)
    事务在执行前数据库的状态与执行后数据库的状态保持一致。如:转账前2个人的 总金额是 2000,转账后 2 个人总金额也是 2000

  • 隔离性(Isolation) 事务与事务之间不应该相互影响,执行时保持隔离的状态。

  • 持久性(Durability) 一旦事务执行成功,对数据库的修改是持久的。就算关机,也是保存下来的。

事物的四个隔离级别

  • read uncommited

    会读到其他事物没有提交的数据,换句话说读的是内存中的临时数据,不是持久化到硬盘的数据。这种现象我们成为脏读。一个用户在读取数据的时候允许其他用户对表数据进行任何操作
  • read commited(oracle默认隔离级别)

    读取到的时候持久化到硬盘的数据,一个用户在读取数据的时候如果其他用户对表数据进行操作,则再次读取到的数据会不一致。
  • repeatable read(mysql默认隔离级别)

    一个用户在读取数据的时候如果其他用户对表数据进行删除和添加操作,再次读取到的记录条数会不一致。
  • serializable

    在读取的时候不允许别人任何操作
文章作者: 微信:hao_yongliang
文章链接: https://haoyongliang.gitee.io/2019/07/08/mysql/MySQL%E4%B8%AD%E7%9A%84%E4%BA%8B%E7%89%A9/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 郝永亮的主页
打赏
  • 微信
    微信
  • 支付寶
    支付寶

评论