![]() |
1
14
这些问题非常复杂,我建议您购买一本书,或者参加并发系统系列讲座,如果您想完全回答这些问题的话:—) |
![]() |
2
11
对你的定义有几点吹毛求疵:
原子性的更正确定义不会提及任何“先前或之后”的事务。原子性是一个事务本身所具有的属性,也就是说,在最后的倒计时中,它的所有操作要么都保持不变,要么根本不存在。换句话说,不应允许“只有一半的交易”持续下去。 然而,这个概念被嵌套事务、保存点等概念模糊了,并且用户可以请求显式回滚到所取的保存点。在某种意义上,它们确实允许“只有事务的一半操作”持续存在,所有这些都是在显式用户的请求下进行的。
这种解释是完全错误的。一致性意味着事务处理器(在本例中是DBMS引擎)不能使系统(数据库)处于违反其(事务处理器)所知道的任何声明约束的状态。例如,参见“数据库系统简介”,第16章。
吹毛求疵:无交易 除了电流 允许查看中间状态(状态,不是真正的结果)。还要注意,事务处理引擎的“隔离级别”通常定义了I属性可以被违反的程度!
但这种属性也被嵌套事务的可能性模糊了一点。即使内部事务已提交并完成,包含该事务的事务仍然可以通过自身完全回滚来撤消该提交。 |
![]() |
3
6
实际的细节可能在某种程度上取决于它是哪个数据库服务器,但本文可能会让您感兴趣: Transaction Processing Cheat Sheet |
![]() |
4
3
在执行方面,有不平衡的努力来保证 ACID 性质。我可以用我的简化思想来总结:
对性能至关重要的两个实施方面(即 酸 不关心):
一些附加的简短信息:
|
![]() |
5
1
我不同意埃尔文·斯穆特关于“一致”意味着什么的观点——你的解释更接近于金钱。根据我的解释 Ramakrishnan and Gehrke A 一致状态 超出了系统的声明约束。 如果通过借记一个账户和贷记另一个账户在两个账户之间转账,系统可能处于以下几种状态:
在这四种状态中,系统的完整性约束都可以保持。但是第二个和第三个不符合一个合理的制度观——金钱 应该在某个地方 . 所以这些状态是不一致的,而初始状态和最终状态是一致的。 事务不会自动使系统保持一致-它们允许用户将它们写入一致。一个写得不好的交易可能有一个错误,忘记将第二个帐户记入贷方。事务将运行良好,完整性约束将保持不变。 但是一个正确的书面程序将系统从一个一致的状态中取出,做出一些暂时不一致的更改(例如,货币不在任何一个帐户中),然后将系统恢复到一个一致的状态。通过在事务中放置这些步骤,可以保证系统达到最终一致状态(提交时)或返回到初始一致状态(如果系统回滚)。无论哪种方式,都会保持一致性。 |
![]() |
6
0
“关于嵌套交易的裁决是什么?” 没有判决。存在嵌套事务。酸性物质存在。他们被迫共存。没有绝对的。当然不会酸。 |
|
kaiselwyvrn · 我无法打开Visual Studio项目 1 年前 |
![]() |
4SadMemeXD · 无法在Django中选择相关类别 2 年前 |
![]() |
Agrim Singh · 用户数据。名称未显示用户名 2 年前 |
![]() |
Peloucvo · 用数据库中的数据填充JTable 2 年前 |
![]() |
Montaser Majid · 用于从多行中提取单行的SQL查询 2 年前 |
![]() |
Max J. · 用整数作为键将dict写入csv 2 年前 |