当前位置: 首页 > 编程笔记 >

数据库的ACID特性术语详解

微生毅
2023-03-14
本文向大家介绍数据库的ACID特性术语详解,包括了数据库的ACID特性术语详解的使用技巧和注意事项,需要的朋友参考一下

ACID就是:原子性(Atomicity )、一致性( Consistency )、隔离性( Isolation)和持久性(Durabilily)。

1. 原子性

原子性属性用于标识事务是否完全地完成,一个事务的任何更新要在系统上完全完成,如果由于某种原因出错,事务不能完成它的全部任务,系统将返回到事务开始前的状态。

让我们再看一下银行转帐的例子。如果在转帐的过程中出现错误,整个事务将会回滚。只有当事务中的所有部分都成功执行了,才将事务写入磁盘并使变化永久化。

为了提供回滚或者撤消未提交的变化的能力,许多数据源采用日志机制。例如,SQL Server使用一个预写事务日志,在将数据应用于(或提交到)实际数据页面前,先写在事务日志上。但是,其他一些数据源不是关系型数据库管理系统(RDBMS),它们管理未提交事务的方式完全不同。只要事务回滚时,数据源可以撤消所有未提交的改变,那么这种技术应该可用于管理事务。

2. 一致性

事务在系统完整性中实施一致性,这通过保证系统的任何事务最后都处于有效状态来实现。如果事务成功地完成,那么系统中所有变化将正确地应用,系统处于有效状态。如果在事务中出现错误,那么系统中的所有变化将自动地回滚,系统返回到原始状态。因为事务开

始时系统处于一致状态,所以现在系统仍然处于一致状态。

再让我们回头看一下银行转帐的例子,在帐户转换和资金转移前,帐户处于有效状态。如果事务成功地完成,并且提交事务,则帐户处于新的有效的状态。如果事务出错,终止后,帐户返回到原先的有效状态。

记住,事务不负责实施数据完整性,而仅仅负责在事务提交或终止以后确保数据返回到一致状态。理解数据完整性规则并写代码实现完整性的重任通常落在开发者肩上,他们根据业务要求进行设计

当许多用户同时使用和修改同样的数据时,事务必须保持其数据的完整性和一致性。因此我们进一步研究A C I D特性中的下一个特性:隔离性。

3. 隔离性

在隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相同的时间内,执行相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。

这种属性有时称为串行化,为了防止事务操作间的混淆,必须串行化或序列化请求,使得在同一时间仅有一个请求用于同一数据。

重要的是,在隔离状态执行事务,系统的状态有可能是不一致的,在结束事务前,应确保系统处于一致状态。但是在每个单独的事务中,系统的状态可能会发生变化。如果事务不是在隔离状态运行,它就可能从系统中访问数据,而系统可能处于不一致状态。通过提供事

务隔离,可以阻止这类事件的发生。

在银行的示例中,这意味着在这个系统内,其他过程和事务在我们的事务完成前看不到我们的事务引起的任何变化,这对于终止的情况非常重要。如果有另一个过程根据帐户余额进行相应处理,而它在我们的事务完成前就能看到它造成的变化,那么这个过程的决策可能

建立在错误的数据之上,因为我们的事务可能终止。这就是说明了为什么事务产生的变化,直到事务完成,才对系统的其他部分可见。

隔离性不仅仅保证多个事务不能同时修改相同数据,而且能够保证事务操作产生的变化直到变化被提交或终止时才能对另一个事务可见,并发的事务彼此之间毫无影响。这就意味着所有要求修改或读取的数据已经被锁定在事务中,直到事务完成才能释放。大多数数据库,例如SQL Server以及其他的RDBMS,通过使用锁定来实现隔离,事务中涉及的各个数据项或数据集使用锁定来防止并发访问。

4. 持久性

持久性意味着一旦事务执行成功,在系统中产生的所有变化将是永久的。应该存在一些检查点防止在系统失败时丢失信息。甚至硬件本身失败,系统的状态仍能通过在日志中记录事务完成的任务进行重建。持久性的概念允许开发者认为不管系统以后发生了什么变化,完成的事务是系统永久的部分。

 类似资料:
  • 本文向大家介绍讲一讲,数据库ACID的特性。相关面试题,主要包含被问及讲一讲,数据库ACID的特性。时的应答技巧和注意事项,需要的朋友参考一下 考察点:数据库 原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。 一致性指事务前后数据的完整性必须保持一致。 隔离性指多个用户并发访问数据库时,一个用户的事务不能被其他用户的事务所干扰,多个并发事务之间数据要相互隔离。 持久性

  • 本文向大家介绍请你介绍一下数据库的ACID特性相关面试题,主要包含被问及请你介绍一下数据库的ACID特性时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 1)原子性:事务被视为不可分割的最小单元,事物的所有操作要不成功,要不失败回滚,而回滚可以通过日志来实现,日志记录着事务所执行的修改操作,在回滚时反向执行这些修改操作。 2)一致性:数据库在事务执行前后都保持一致性状态,在一致性状态下,所有

  • 本文向大家介绍什么是事务的四大特性(ACID)?相关面试题,主要包含被问及什么是事务的四大特性(ACID)?时的应答技巧和注意事项,需要的朋友参考一下 原子性(Atomicity): 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用; 一致性(Consistency): 执行事务前后,数据保持一致,多个事务对同一个数据读取的结果是相同的; 隔离性(Isolati

  • Tableau是一个功能强大的数据可视化工具; 这就是为什么Tableau有许多独特的术语和定义。在开始在Tableau中使用这些功能之前,应该了解它们的含义。 下面列出了最常用的Tableau术语: 别名:别名是可以分配给维度成员,测量部分或字段的替代方法。 Bin:Bin是数据源中用户定义的度量组。 书签:Tableau存储库中包含单个工作表的书签文件夹中的文档。它有助于改进数据分析。与Web

  • 本文向大家介绍数据库Mysql性能优化详解,包括了数据库Mysql性能优化详解的使用技巧和注意事项,需要的朋友参考一下 在mysql数据库中,mysql key_buffer_size是对MyISAM表性能影响最大的一个参数(注意该参数对其他类型的表设置无效),下面就将对mysql Key_buffer_size参数的设置进行详细介绍下面为一台以MyISAM为主要存储引擎服务器的配置: 分配了51

  • 问题内容: 在实体的ORM /延迟加载的情况下,我对术语“水合”的理解如下: “水合”描述了填充使用延迟加载获取的实体的某些或全部先前未填充的属性的过程。 例如:从数据库中加载类: 最初,不填充集合。 据我了解,从数据库加载集合的过程称为“水化”集合。 这个定义正确吗?我应该在此过程中使用另一个更通用的术语吗? 问题答案: Hydrate最初是一个术语,用于从db中填充实例化(但为空)的值对象/模