MySQL事务简介详解数据库

  • 事务定义:
    一个业务包含多个操作,多个操作要么全部成功,要么全部不成功。
  • 事务特性:ACID

    • 原子性(Atomicity):组成事务处理的语句形成了一个逻辑单元,要么全都执行,要么全都不执行 。
    • 一致性(Consistency):事务在完成时,必须使所有的数据都保持一致状态 。
    • 隔离性(Isolcation):由并发事务所作的修改必须与任何其它并发事务所作的修改隔离
    • 持续性(Durability):事务完成之后,它对于系统的影响是永久性的。该修改即使出现致命的系统故障也将一直保持 。
  • 事务的隔离性,产生相应的隔离问题

    • 脏读:一个事务读到了另一个事务,没有提交的数据。
    • 不可重复读:一个事务读到了另一个事务,已经提交的数据(数据的更新update)。
    • 幻读(虚读):一个事务读到了另一个事务,已经提交的数据(数据的录入insert)。
  • 数据库的隔离级别

    • 为了解决隔离性产生的问题
    • 分类

      • 读未提交(read uncommitted) , 所有问题
      • 读已提交(read committed) , 解决了脏读,没有解决其他问题。
      • 可重复读(repeatable read) , 解决了脏读 和 “不可重复读” , 没有解决幻读 (mysql直接不可重复读,将“幻读”解决)
      • 串行化(serializable) , 同步synchronized,相当于单线程,单事务,没有并发问题。 –
        这里写图片描述
    • 对比

      • 性能:read uncommitted > read committed > repeatable read > serializable
      • 安全:read uncommitted < read committed < repeatable read < serializable

    mysql默认隔离级别:repeatable read

  • mysql事务操作sql语句

    • 开启事务 :mysql > start transaction;
    • 提交事务 :mysql > commit;
    • 回滚事务 :mysql > rollback;

    • 查询数据库当前隔离界别:mysql > select @@tx_isolation;

    • 修改数据库当前隔离界别:mysql > set session transaction isolation level (read uncommitted | read committed | repeatable read | serializable)

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/4232.html

(0)
上一篇 2021年7月16日
下一篇 2021年7月16日

相关推荐

发表回复

登录后才能评论