zoukankan      html  css  js  c++  java
  • 事务的特点、隔离级别、及相关的现象

    MySQL中的事务

    • 事务提供一种“要么什么都不做,要么做全套(All or Nothing)”的机制,她有ACID四大特性
    1. 原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。
    2. 一致性(Consistency):事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态是指数据库中的数据应满足完整性约束。除此之外,一致性还有另外一层语义,就是事务的中间状态不能被观察到(这层语义也有说应该属于原子性)。
    3. 隔离性(Isolation):多个事务并发执行时,一个事务的执行不应影响其他事务的执行,如同只有这一个操作在被数据库所执行一样。
    4. 持久性(Durability):已被提交的事务对数据库的修改应该永久保存在数据库中。在事务结束时,此操作将不可逆转。
    • 事务的隔离级别
    1. 读未提交(read uncommitted)
      1. A事务读取到B事务未提交的数据,可能B事务回滚,那么A事务读取的应该是无效的数据,也称为脏读
      2. 写 行数据时不可同时写,避免了更新失效,但可读,所以可能造成脏读。
    2. 读已提交(read committed)
      1. 写的事务,将禁止写,且禁止读该写入的数据
      2. 读的事务,则允许其他事务读写
      3. 当A事务前后两次读同一条数据时,假如在中间B事务对此数据做了更新并提交事务,那么A事务前后两次读取的数据则不一致,称为重复读
    3. 可重复读(Repeatable read)
      1. 读的事务开启,不允许其他修改操作的事务,但可以读
      2. 当有insert操作时,可能引发读事务的前后总数不一致,称为幻读
    4. 串行化(serializable)
      1. 锁表操作,事务只能排队执行,不能并发执行,所以可以避免 脏读、重复读不一致、数量的幻读
  • 相关阅读:
    web api post/put空值问题以及和angular的冲突的解决
    大话数据结构-图
    大话数据结构-树
    大话数据结构-栈与队列
    大话数据结构-线性表
    redis发布订阅、HyperLogLog与GEO功能的介绍
    redis使用管道pipeline提升批量操作性能(php演示)
    redis设置慢查询日志
    Laravel5.5配置使用redis
    Redis数据类型的常用API以及使用场景
  • 原文地址:https://www.cnblogs.com/erfsfj-dbc/p/12165358.html
Copyright © 2011-2022 走看看