ACID和数据库事务之间有什么关系?

ACID是给数据库事务还是给数据库事务提供相同的东西?

有人能启发一下这个话题吗.

推荐答案

ACID是您希望在修改数据库时应用的一组属性.

  • 原子性
  • 一致性
  • 隔离
  • 耐久性

事务是一组用于实现某些ACID属性的相关更改.事务是实现ACID属性的工具.

原子性意味着您可以保证所有事务都发生,或者一个事务都不发生;您可以将复杂的操作作为一个单元来执行,要么全部执行,要么什么都不执行,崩溃、断电、错误或任何其他情况都不允许您处于只发生了部分相关更改的状态.

一致性意味着你保证你的数据是一致的;您对相关数据的任何约束都不会被违反.

隔离意味着一个事务不能从另一个尚未完成的事务中读取数据.如果两个事务同时执行,每一个事务都会看到整个世界,就好像它们是按顺序执行的一样,如果一个事务需要读取另一个事务写入的数据,则必须等待另一个事务完成.

持久性意味着一旦事务完成,就可以保证所有更改都已记录到持久介质(如硬盘)中,并且事务已完成的事实也同样会被记录.

因此,事务是一种保证这些属性的机制;它们是将相关操作分组在一起的一种方式,以便作为一个整体,一组操作可以是原子的,产生一致的结果,与其他操作隔离,并且可以持久地记录.

Database相关问答推荐

华为Appcube中的对象字段类型

使用 noSQL 和 MongoDB 在数据库中存储任何类型文件的最佳方法是什么

文件存储的推荐位置 - 在数据库或其他什么地方?

怎么修复ORA-28001: the password has expired

术语 SSTable 和 LSM Tree 有什么区别

在不稳定的网络中保持分布式数据库同步

类似 Hibernate 的 C++ 框架

苹果 ios 购买收据数据的可能最大长度是多少?

MySQL workbench:如何将 mysql 数据库导出到 .sql 文件?

CouchDB 和 Lotus Notes 有什么区别?

db:schema:load vs db:migrate with capistrano

将 `tsv` 文件插入 postgresql 数据库

如何使用 MySQL Workbench 更改字段的值?

如何在 Rails 中不启动事务的情况下运行迁移?

如果数据库已经提供缓存,为什么还要使用应用程序级缓存?

省略日期中的毫秒数

MySQL中的eq_ref和ref类型是什么意思解释

复式记账的关系数据模型

为什么 DBMS 不支持 ASSERTION

DBMS中数据模型和数据库模式的区别?