当前位置: 首页 > 面试题库 >

请你聊一聊数据库事物的一致性

苏涛
2023-03-14
本文向大家介绍请你聊一聊数据库事物的一致性相关面试题,主要包含被问及请你聊一聊数据库事物的一致性时的应答技巧和注意事项,需要的朋友参考一下

参考回答:

事务(Transaction)是由一系列对系统中数据进行访问与更新的操作所组成的一个程序执行逻辑单元。事务是DBMS中最基础的单位,事务不可分割。

事务具有4个基本特征,分别是:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Duration),简称ACID。

1)原子性(Atomicity)

原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,[删删删]因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。

2)一致性(Consistency)

一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。

拿转账来说,假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还得是5000,这就是事务的一致性

3)隔离性(Isolation)

隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。

即要达到这么一种效果:对于任意两个并发的事务T1和T2,在事务T1看来,T2要么在T1开始之前就已经结束,要么在T1结束之后才开始,这样每个事务都感觉不到有其他事务在并发地执行

多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果。这指的是在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间。由并发事务所做的修改必须与任何其他并发事务所做的修改隔离。

不同的隔离级别:

Read Uncommitted(读取未提交[添加中文释义]内容):最低的隔离级别,什么都不需要做,一个事务可以读到另一个事务未提交的结果。所有的并发事务问题都会发生。

Read Committed(读取提交内容):只有在事务提交后,其更新结果才会被其他事务看见。可以解决脏读问题。

Repeated Read(可重复读):在一个事务中,对于同一份数据的读取结果总是相同的,无论是否有其他事务对这份数据进行操作,以及这个事务是否提交。可以解决脏读、不可重复读。

Serialization(可串行化):事务串行化执行,隔离级别最高,牺牲了系统的并发性。可以解决并发事务的所有问题。

4)持久性(Durability)

持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。

例如我们在使用JDBC操作数据库时,在提交事务方法后,提示用户事务操作完成,当我们程序执行完成直到看到提示后,就可以认定事务以及正确提交,即使这时候数据库出现了问题,也必须要将我们的事务完全执行完成,否则就会造成我们看到提示事务处理完毕,但是数据库因为故障而没有执行事务的重大错误。

 类似资料:
  • 本文向大家介绍请你来聊一聊appium断言相关面试题,主要包含被问及请你来聊一聊appium断言时的应答技巧和注意事项,需要的朋友参考一下 参考回答: appium-unittest单元测试框架中,TestCase 类提供了一些方法来检查并报告故障,如下图 : 上面所提供的断言方法(assertRaises(), assertRaisesRegexp()除外)接收 msg 参数,如果指定, 将体作

  • 本文向大家介绍聊一聊你对Kafka的Log Retention的理解相关面试题,主要包含被问及聊一聊你对Kafka的Log Retention的理解时的应答技巧和注意事项,需要的朋友参考一下 kafka留存策略包括 删除和压缩两种 删除: 根据时间和大小两个方式进行删除 大小是整个partition日志文件的大小 超过的会从老到新依次删除 时间指日志文件中的最大时间戳而非文件的最后修改时间 压缩:

  • 本文向大家介绍聊一聊你如何看待加班的呢?相关面试题,主要包含被问及聊一聊你如何看待加班的呢?时的应答技巧和注意事项,需要的朋友参考一下 加班有两个方面:一方面可能自己确实工作效率太低,如果是这样,我会努力提高工作效率,减少不必要的加班;另一方面,可能确实这个项目确实有点急,为了公司效益会选择加班,但如果平时非特殊时间段也要求加班,需要给予加班费。

  • 本文向大家介绍请你说一说数据库事务相关面试题,主要包含被问及请你说一说数据库事务时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要

  • 本文向大家介绍聊一聊Java反射,包括了聊一聊Java反射的使用技巧和注意事项,需要的朋友参考一下 这次提到的Java反射涉及的代码比较多。因为工作中经常用到反射,对代码做了很多抽象以及过滤器。虽然代码量很多,但是简单易用,过滤插件也易修改。 下面介绍下工作中哪些地方比较容易用到反射。比如插件或者过滤器,如果抽象的子类比较少,配置成XML等结构也是可以达到同样的效果。如果希望灵活一些,添加了插件或

  • 本文向大家介绍聊一聊Kafka Controller的作用?相关面试题,主要包含被问及聊一聊Kafka Controller的作用?时的应答技巧和注意事项,需要的朋友参考一下 负责管理集群broker的上下线,所有topic的分区副本分配和leader选举等工作。