暑期自学 Day 14 | 数据库 (七)- 事务

事务

  • 多个操作被事务管理后,要么同时失败,要么同时成功;避免安全问题发生。
  • 操作:
    • 开启:start transaction;
    • 结束:commit;
    • 回滚:rollback;
  • mysql 中 DML 默认自动提交事务
    • 设置手动提交 SET @@autocommit = 0;

事务四大特征***

  • 原子性:不可分割的最小操作单位,要么同时成功,要么同时失败。
  • 持久性:事务提交或回滚后,数据库会持久化保存数据。
  • *隔离性:多个事务之间相互独立。– 引出数据的隔离级别
  • 一致性:事务操作前后数据总量不变。

事务隔离级别

  • 多个事务操作同一组数据,会引发一些问题,需要设置不同隔离级别解决问题。
  • 存在的问题:
    • 脏读:一个事务读到另一个事务未提交的数据。
    • 不可重复读(虚读):同一个事务中,两次读取到的数据不一样。
    • 幻读:一个事务操作数据表中所有记录,另一个事务添加了一条数据,则第一个事务查询不到自己的修改。
  • 几个级别
    • read uncommitted
    • read commited: 解决脏读,Oracle 默认级别
    • repeatable read:解决脏读和虚读,mySql 默认级别
    • serializable:解决所有问题,相当于给操作上了锁,只有一个事务执行完成才能执行另一个事务。
  • 级别安全性由低到高,效率由高到低
  • 查看事务级别:SELECT @@tx_isolation;
  • 修改事务隔离级别:SET GLOBAL TRANSACTION ISOLATION LEVEL 级别字符串;
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!