有人能够提供一个简单明了但不过于简化的关于计算机事务的解释吗?
有人能够提供一个简单明了但不过于简化的关于计算机事务的解释吗?
事务可以定义为被视为最小处理单元的任务集合。每个最小处理单元都不能再被分割。
事务的主要操作是读取和写入。
所有事务必须包含四个属性,通常称为ACID属性,以确保准确性、完整性和数据完整性。
事务是数据处理的不可分割单元 -所有事务必须具有ACID属性:
即:原子性、一致性、隔离性和持久性 事务要么全部执行,要么全部不执行,不存在中间状态(这意味着如果您将钱从一个帐户转移到另一个帐户,则一个帐户必须损失相应金额,而另一个帐户必须获得该金额,但如果您将钱从一个帐户转移到另一个帐户仍为空,那将不是一笔交易)
如果您需要按顺序运行一些查询,如果所有查询都必须执行或者不执行任何一个,我们将这些查询封装在一个事务中。经典的例子是从A向B发送资金。我们运行一个“UPDATE”查询来更新用户A的余额,并运行另一个“UPDATE”查询来更新用户B的余额。
如果您在计算机上安装了MySQL或Postgres,打开一个新的工作区选项卡,您可以在两个数据库中使用BEGIN
开始一个事务。这将创建一个隔离的工作空间。您在此处运行的任何查询都不会在其他打开的选项卡中看到。例如,如果您在银行应用程序中有用户账户表,则可以在启动事务的隔离工作区中运行此命令:
UPDATE accounts
SET balance=balance-100
WHERE name="yilmaz"
SELECT * FROM accounts WHERE name="yilmaz"
您将看不到更新后的结果。我们在事务工作区所做的任何更改都尚未提交到主数据库。在事务工作区,我们可以运行另一个查询来增加接收者的余额。
UPDATE accounts
SET balance=balance+100
WHERE name="B"
在事务工作区运行查询结束后,我们必须将这些更改合并到主数据库中。为此,我们运行
COMMIT
我认为在DBMS中,事务是一个原子操作。
这意味着它不能被分开。是的,在一个事务中,可能有几个指令需要系统执行。但它们被绑定在一起完成一个单一的基本任务。
例如,你需要走过一座桥(让我们把它看作是一个事务),为了做到这一点,你需要100步。总体上,这些步骤不能被分开。当你完成其中一半时,只有两个选择:继续完成所有步骤,或者回到起点。就像事务的结果一样:成功(提交)和失败(回滚)。