在回答这个问题的时候首先要考虑的是这里面包含了哪些知识点是我们要回答的,

第一个要点:什么是事务;

第二个要点:数据库的基本特性是什么?

第三个要点:什么是事务隔离,有哪些事务隔离级别?

什么是事务

数据库中的事务是作为单个逻辑工作单元执行的一系列操作。(多条 SQL 语句,要么全部执行成功,要么全部执行失败。)

数据库要支持事务操作必须满足四个特性,也就是常说的ACID:

A:原子性(Atomicity):原子性是指事务包含的所有操作要么全部成功,要么全部失败

C:一致性(Consistency):一个事务执行之前和执行之后都必须处于一致性状态。

I:隔离性(Isolation):多个事务在执行同一个操作时不能被其他事务干扰。

D:持久性(dependency):一个事务一旦提交,它对数据库中数据的改变就应该是永久性的

什么是事务隔离,有哪些事务隔离级别?

事务的隔离性就是指,多个并发的事务同时访问一个数据库时,一个事务不应该被另一个事务所干扰,每个并发的事务间要相互进行隔离。

一般的数据库,都包括以下四种隔离级别:

读未提交(Read Uncommitted)

读提交(Read Committed)

可重复读(Repeated Read)

串行化(Serializable)

读未提交(Read Uncommitted)

读未提交,就是可以读到未提交的内容。

因此,在这种隔离级别下,查询是不会加锁的,也由于查询的不加锁,所以这种隔离级别的一致性是最差的,可能会产生“脏读”、“不可重复读”、“幻读”。

读提交(Read Committed)

读提交,就是读到已经提交了的内容。

这是各种系统中最常用的一种隔离级别,也是SQL Server和Oracle的默认隔离级别。这种隔离级别能够有效的避免脏读,但除非在查询中显示的加锁。“读提交”只能避免“脏读”,并不能避免“不可重复读”和“幻读”。

可重复读(Repeated Read)

可重复读,就是专门针对“不可重复读”这种问题而制定的隔离级别,它可以有效的避免“不可重复读”。并且它也是MySql的默认隔离级别。

当事务启动时,不允许进行“修改操作(Update)”,而“不可重复读”恰恰是因为两次读取之间进行了数据的修改,因此,“可重复读”能够有效的避免“不可重复读”,但却避免不了“幻读”,因为幻读是由于“插入或者删除操作(Insert or Delete)”而产生的。

串行化(Serializable)

数据库最高的隔离级别,这种级别下,事务“串行化顺序执行”,也就是一个一个排队执行(每一行数据都进行了加锁)。

这种级别下,“脏读”、“不可重复读”、“幻读”都不会出现,但是执行效率非常差,性能开销也最大,所以基本没人会用。

简述一下你对mysql事物的理解_面试题:说说你对数据库事务的理解相关推荐

  1. 分布式锁和mysql事物扣库存_浅谈库存扣减和锁

    先说场景: 物品W现在库存剩余1个,  用户P1,P2同时购买.则只有1人能购买成功.(前提是不允许超卖) 秒杀也是类似的情况, 只有1件商品,N个用户同时抢购,只有1人能抢到.. 这里不谈秒杀设计, ...

  2. mysql 游戏服务器设计_游戏服务器之基于文件数据库和mysql数据库的db服务器设计...

    设计上: (1)文件数据库是用于处理游戏逻辑业务请求. (2)mysql数据库是用于处理运营后台查询请求. (3)备份业务是用于定时备份文件数据库文件. 本文目录: 1.角色数据更新请求 2.mysq ...

  3. 分布式锁和mysql事物扣库存_这个是真的厉害,高并发场景下的订单和库存处理方案,讲的很详细了!...

    前言 之前一直有小伙伴私信我问我高并发场景下的订单和库存处理方案,我最近也是因为加班的原因比较忙,就一直没来得及回复.今天好不容易闲了下来想了想不如写篇文章把这些都列出来的,让大家都能学习到,说一千道 ...

  4. springboot mysql事物_在Spring Boot中使用数据库事务

    关于数据库访问还有一个核心操作那就是事务的处理了,前面两篇博客小伙伴们已经见识到Spring Boot带给我们的巨大便利了,其实不用猜,我们也知道Spring Boot在数据库事务处理问题上也给我们带 ...

  5. mysql 11关系图_用实体关系图进行数据库建模(PD11+Visio)

    用实体关系图进行数据库建模 (ccidnet阿良@仙人掌工作室 2001年08月14日) 一.概述 很可能你现在正在规划一个数据库驱动的网站:而且几乎可以肯定的是,你一定已经浏览过数据库驱动的网站.过 ...

  6. 梯度的直观理解_关于梯度、旋度和散度的直观理解

    关于梯度.旋度和散度的直观理解 散度为零,说明是无源场:散度不为零时,则说明是有源场(有正源或负源) 若你的场是一个流速场,则该场的散度是该流体在某一点单位时间流出单位体积的净流量. 如果在某点,某场 ...

  7. mysql设置token有效期_记住我 token保存到数据库

    记住我 token保存到数据库 这里使用jpa+mysql org.springframework.boot spring-boot-starter-data-jpa mysql mysql-conn ...

  8. 高内聚低耦合通俗理解_抱歉,请不要把“业务逻辑层”理解为“业务中台”

    在IAS2019中台架构峰会上,我曾与一位年轻帅气的技术小伙来了一番有趣的对话. 因为和朋友有约,所以我在现场互动结束之后,就急匆匆地跟其他嘉宾打了声招呼,抱着笔记本冲出了会场. 但没想到刚到电梯口, ...

  9. mysql字段分隔符拆分_面试题Mysql数据库优化之垂直分表

    在日常的开发工作中,除了JAVA相关的技术,打交道最多的就是Mysql数据库,当数据积累到一定程度,比如500W时就会难免出现一些慢sql,对数据库的优化方式有很多,比如通过增加合理的索引,今天我们来 ...

最新文章

  1. 北京冬奥又曝黑科技:连气象主播都是AI虚拟人
  2. vue的自定义标签tag是什么意思啊_好好的衣服为什么洗一次就废,服装标签上的图标究竟是什么意思?...
  3. 【大型网站技术实践】初级篇:海量图片的分布式存储设计与实现
  4. vue watch监听某输入框中是否有值,然后改变某输入框的属性值
  5. pymol怎么做底物口袋表面_汽车表面有划痕怎么办?建议大家这样做,自己动手就解决...
  6. 应用层协议:HTTPS
  7. 小米mix2s html,【小米MIX2s评测】2018需要加价买的旗舰 小米MIX 2S评测_小米 MIX 2s(6GB RAM/全网通)_手机评测-中关村在线...
  8. java常见的gc回收器_一篇文章让你了解GC垃圾回收器
  9. 深度学习代码实战——基于RNN的手写数字分类
  10. ubuntu16.04下ROS操作系统学习笔记(三 / 一)ROS基础-工作空间
  11. php 串行化与json(转)--很不错的文章
  12. 借助易宝实现Java版网上在线支付
  13. 安卓手机通电自动开机,自动执行脚本,断电关机,连接电源手机自动开机,断电关机
  14. JSP教程 JSP教程 JSP教程 JSP教程 JSP教程 JSP教程
  15. 苹果手机几月份最便宜_苹果手机越来越便宜,安卓手机越来越贵,果真是这样吗?...
  16. pandas爬虫爬取网页表格
  17. linux分析测序数据,[转]如何分析测序结果
  18. adb remount失败的一种解决办法
  19. [POI2011] SEJ-Strongbox(数论)
  20. neosmart linux 光标,重装windows系统后原有的linux系统无法进入的解决办法。

热门文章

  1. 简单的FTP应用程序
  2. 纯CSS美化单复选框(checkbox、radio)
  3. java 输出ab_一道在知乎很火的 Java 题——如何输出 ab【转】
  4. selenium 状态码521_sqlmap对状态码404处理的bug
  5. Git入门之上传本地项目至Github(一)
  6. iOS之性能优化·优化App的电池耗电量
  7. iOS开发之打电话,发短信,发送邮件
  8. 2 0 2 0 年 第 十 一 届 蓝 桥 杯 - 国赛 - CC++大学B组 - B.扩散
  9. range方法在Python2和Python3中的不同
  10. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1088:分离整数的各个数