目录

MySQL的事务属性

1.0 什么是事务

1.事务:事务是数据库系统区别于其他一切文件系统的重要特性之一

2.事务是一组具有原子性的SQL语句,或是一个独立的工作单元

1.1 MySQL事务的特性

  • 原子性(ATOMICITY):SQL要么全部执行完成,要么全部失败,不可能执行部分语句。

    举个例子 如果要去中国银行向建设银行存钱

    1. 查看中国银行中的账户余额是否大于2000元

    2. 从中国银行的帐户中转出2000元

    3. 在建设银行的账户上增加2000元

    如果上面的任何一步拿出来单独执行,后果你懂的…😂

  • 一致性(CONSISTENCY):数据库的完整性不发生改变

    举个例子 不管怎么转钱,总的余额不变

  • 隔离性(ISOLATION):一个事务对数据库中的数据修改,未提交事务之前对于其他事务不可见

    • SQL标准的四种隔离级别
      • 未提交读:简称脏读
      • 已提交读:只能看到已提交事物的修改
      • 可重复读:多次读取事物的数据是一致的,包括已提交的事务
      • 可串行化:读取的每一行进行加锁 可能会导致锁超时,除非严格要求数据一致性.
  • 事务持久性(DURABILITY):一旦事务提交,其所做的修改会永久的存入数据库,即使系统崩溃 数据也不会丢失.

1.2 什么是大事务

运行时间比较长,操作的数据量比较多的事务.

大事务可能会造成的影响

  • 锁定太多的数据,造成大量的阻塞和锁超时

  • 回滚时所需要的时间较长

  • 执行时间长,容易造成主从延迟

1.3 如何处理大事务

  1. 避免一次处理太多的数据
  2. 移除不必要在事务中的SELECT操作

做到这两点基本上大事务就解决了