事务是一个高度抽象的概念。事务要解决的问题是如何使多次操作,对外部看起来是一个整体的操作。理想的事务是一把锁,把一个一个的事务按照队列一样排列,不过这样性能我们无法接受,因此引入了引入了MVCC (Multi-Version Concurrency Control) 的概念,MVCC本质是copy-on-write。事务的本质是什么?事务=锁+MVCC

怎么理解一致性

一致性是指数据处于一种语义上的有意义且正确的状态。一致性是对数据可见性的约束,保证在一个事务中的多次操作的数据中间状态对其他事务不可见的。因为这些中间状态,是一个过渡状态,与事务的开始状态和事务的结束状态是不一致的。
举个栗子,张三给李四转账100元。事务要做的是从张三账户上减掉100元,李四账户上加上100元。一致性的含义是其他事务要么看到张三还没有给李四转账的状态,要么张三已经成功转账给李四的状态,而对于张三少了100元,李四还没加上100元这个中间状态是不可见的。
那么反驳的声音来了:

  1. 要么转账操作全部成功,要么全部失败,这是原子性。从例子上看全部成功,那么一致性就是原子性的一部分咯,为什么还要单独说一致性和原子性?
  2. 你说的不对。在未提交读的隔离级别下是事务内部操作是可见的,这时候会出现脏读,明显违背了一致性,怎么解释?

好吧,你的疑问很有道理,也很充分,这正说明你对事务的ACID特性理解的很到位。不过,需要注意的是:

  1. 原子性和一致性的的侧重点不同:原子性关注状态,要么全部成功,要么全部失败,不存在部分成功的状态。而一致性关注数据的可见性,中间状态的数据对外部不可见,只有最初状态和最终状态的数据对外可见。
  2. 在未提交读的隔离级别下,会造成脏读,这就是因为一个事务读到了另一个事务操作内部的数据。ACID中是的一致性描述的是一个最理想的事务应该怎样的,是一个强一致性状态,如果要做到这点,需要使用排它锁把事务排成一队,即Serializable的隔离级别,这样性能就大大降低了。现实是骨感的,所以使用隔离性的不同隔离级别来破坏一致性,来获取更好的性能。

事务隔离级别浅析---一致和原子的区别相关推荐

  1. 数据库事务的四个隔离级别浅析

    数据库事务的隔离级别有4个,由低到高依次为Read uncommitted (读未提交).Read committed(读提交).Repeatable read(可重复读) .Serializable ...

  2. 关于MySQL的四种事务隔离级别!

    本文实验的测试环境:Windows 10+cmd+MySQL5.6.36+InnoDB 一.事务的基本要素(ACID) 原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不 ...

  3. mysql的隔离级别_MySQL的四种事务隔离级别

    一.事务的基本要素(ACID) 1.原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节.事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有 ...

  4. java 一个大事务下的新增、修改、查询_重新学习Mysql数据库8:MySQL的事务隔离级别实战...

    本文转自:https://blog.csdn.net/sinat_27143551/article/details/80876127 本系列文章将整理到我在GitHub上的<Java面试指南&g ...

  5. 30分钟全面解析-SQL事务+隔离级别+阻塞+死锁

    阅读目录 概述: 一.事务 二.锁 三.阻塞 四.隔离级别 五.死锁 以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化.  本系列主要是针对T-SQL的总结. ...

  6. mysql 默认事务隔离级别_MySQL 事务隔离级别详解

    个人公众号『码农札记』,欢迎关注,查看更多精彩文章. 简介: MySQL的事务隔离级别一共有四个,分别是读未提交.读已提交.可重复读以及可串行化. 四个特性ACID 原子性 (Atomicity) 事 ...

  7. (4.12)全面解析-SQL事务+隔离级别+阻塞+死锁

    30分钟全面解析-SQL事务+隔离级别+阻塞+死锁 转自:https://blog.csdn.net/slowlifes/article/details/52752735 2016年10月07日 23 ...

  8. mysql四种事务级别_【MySQL 知识】四种事务隔离级别

    摘要:本篇文章主要是为了对MySQL的四种事务隔离级别的介绍.为了保证数据库的正确性与一致性,数据库事务具有原子性(Atomicity).一致性(Consistency).隔离性(Isolation) ...

  9. mysql 默认事务隔离级别_一文读懂MySQL的事务隔离级别及MVCC机制

    回顾前文: <一文学会MySQL的explain工具> <一文读懂MySQL的索引结构及查询优化> (同时再次强调,这几篇关于MySQL的探究都是基于5.7版本,相关总结与结论 ...

最新文章

  1. 2012年CS毕业生
  2. 多项式辗转相除法求最大公约数_多项式的一些性质
  3. Koding VM 配置nginx 小记
  4. JNI学习积累之三 ---- 操作JNI函数以及复杂对象传递
  5. vmware桥接模式、NAT网络地址转换、仅主机模式
  6. win7服务器建网站教程,win7搭建Web服务器教程
  7. Go开发 之 单端口转发到多个端口
  8. 如何优雅地使用 Sublime Text
  9. 一款清爽的CSS表格样式
  10. 京东3元无门槛优惠券变京豆
  11. BIND9配置文件详解
  12. 404 jpeg图片_nginx中获取图片抛404错误
  13. O2OA接入企业钉钉 - 在钉钉上使用移动办公(新版)
  14. 卡塔尔世界杯壁纸已上线,下载的壁纸清晰度不够?教你修复清晰
  15. colorkey唇釉是否安全_colorkey空气唇釉怎么样 人气口红种草 – 爱打扮
  16. 决策树在商业保险中的应用
  17. 朱有鹏 socket实际编程2(6)
  18. 零售巨头家乐福应用区块链跟踪奶制品供应链
  19. 无关(relationship)
  20. .教你拿webshell的45种方法

热门文章

  1. Python笔记-windows管道通信
  2. 【操作系统 进程调度】
  3. 怎样短期内考取PMP证书?
  4. 京东购物成功订单已开具个人发票不能报销怎么申请更换重新开具企业发票用于报销?
  5. 厨房秤程序开发,芯片供应
  6. xampp无权限,xampp-control.ini 拒绝访问
  7. Linux core dump文件设置以及查看
  8. MIPI转eDP IT6151
  9. 5类系统推荐算法,非常好使,非常全
  10. 护士计算机考试免考,护士执业资格考试能免考吗