6

我是数据库和 SQL Server 的新手。

因此,当我在互联网上搜索有关数据库的内容时,我发现如果数据库遵守或遵循ACID(原子性、一致性、隔离性、耐久性)属性,则该数据库说得很好。

我想知道Microsoft SQL Server(当前或以前的任何版本)在内部遵循 ACID 属性,或者如果我们在应用程序中使用 MS SQL Server,那么我们必须编写代码,使我们的应用程序遵循 ACID 属性。

简而言之:维护ACID 属性Database的任务(或责任)或Application Programmer 的任务。

谢谢..

4

5 回答 5

9

恕我直言,这是一个双重维护。数据库管理员(编写存储过程)和程序员都应该强制执行 ACID 属性。SQL Server 在内部维护自己的 ACID 属性,我们不必担心这一点。

ACID 属性在 SQL Server 中强制执行。

阅读:SQL 2005 的酸性特性

但这并不意味着数据库会为您处理所有事情。

根据 Pinal Dave ( blog.sqlauthority.com )

ACID(原子一致性隔离耐久性的首字母缩写词)是数据库专业人员在评估数据库和应用程序架构时通常会寻找的概念。对于一个可靠的数据库,应该实现所有这四个属性。

原子性是一个全有或全无的命题。

一致性保证事务永远不会使您的数据库处于半完成状态。

隔离使事务彼此分离,直到它们完成。

持久性保证数据库将跟踪挂起的更改,以便服务器可以从异常终止中恢复。

以上四个规则对于任何处理数据库的开发人员来说都非常重要。

这适用于处理数据库的开发人员。

但是应用程序开发人员还应该编写执行 ACID 属性的业务逻辑。

我猜一个关于ACID 属性的实际使用的例子会帮助你更多

于 2011-07-09T09:21:47.980 回答
2

几乎每个现代数据库系统都强制执行 ACID 属性。阅读本文:数据库事务和 ACID 属性

于 2011-11-30T02:01:35.190 回答
2

ACID --> 原子性、一致性、隔离性、持久性

原子性:
事务是处理的基本单元。要么它的所有操作都被执行,要么一个都不被执行。假设系统在 Write(A) 操作之后(但在 write(B) 之前)崩溃。
数据库必须能够恢复 A 和 B 的旧值(或完成整个事务)

一致性保持:
单独执行事务必须将数据库从一种一致状态移动到另一种一致状态。A 和 B 的总和必须在交易执行时保持不变

隔离:
一个事务不应该让其他事务知道它的影响,直到它提交之后。如果两个事务同时执行,则必须看起来一个在另一个开始之前完成了执行。如果同时执行的另一个事务正在读取(和/或写入)帐户 A 和 B,它应该无法读取处于不一致状态的数据(写入 A 之后和写入 B 之前)

持久性:
一旦事务提交,对数据库的更改不会由于未来的故障而丢失。一旦事务完成,我们将始终在数据库中拥有新的 A 和 B 值

于 2016-12-20T04:37:29.367 回答
1

酸 :

[A] tomic:- 一切成功或失败都作为一个整体。

[C] 一致:- 操作完成后,一切都处于安全状态。

[I]solated:- 没有其他操作可以影响我的操作。

[D]urable:- 操作完成后,更改是安全的

于 2013-10-07T10:21:36.070 回答
1

事务:- 事务是行为类似于单个单元的一批 SQL 语句。简单来说,事务是完成一系列工作以完成整个活动的单元。我们可以以银行交易为例来理解这一点。

当我们将钱从账户“A”转移到账户“B”时,就会发生一笔交易。每笔交易都有四个特征,这些特征被称为 ACID 属性。

◦ 原子性 ◦ 一致性 ◦ 隔离性 ◦ 持久性

原子性:——每个事务都遵循原子性模型,这意味着如果一个事务启动,它应该要么完成,要么回滚。为了理解这一点,让我们以上面的例子为例,如果有人将金额从账户“A”转移到账户“B”,则应在完成交易后将其记入账户 B。如果发生任何故障,从账户“A”中扣除金额后,应回滚更改。

一致性: - 一致性表示在事务完成后,事务期间所做的更改应该是一致的。让我们通过参考上面的例子来理解这个事实,如果账户“A”已经被扣除了 200 RS,那么在交易完成后账户“B”应该被记入 200 RS。这意味着变化应该是一致的。

隔离: - 隔离声明每个事务都应该相互隔离,两个事务之间不应该有任何干扰。

持久性: - 持久性是指一旦事务完成,所有的更改应该是永久的,这意味着在任何系统故障的情况下,更改不应该丢失。

于 2015-02-26T14:58:15.577 回答