transactions - 事务中Partially Committed和Committed State有什么区别?

标签 transactions rdbms

我知道,如果一个事务成功地执行了它的所有操作,就说它被提交了。它的所有效果现在都永久地建立在数据库系统上。

但是我不明白什么是Partially Committed状态?

根据定义:

Partially Committed state is When a transaction executes its final operation, it is said to be in a partially committed state.

因为部分提交和提交状态都发生在所有事务操作都已执行之后。

如何区分这两种交易状态。

最佳答案

来自 this reference ,当数据库事务的所有组件都已完成时,出现部分提交状态,并且 RDBMS 逻辑上已 promise 将这些更改持久保存到数据库,但尚未真正持久保存它们。我在这里使用“逻辑上”这个词是因为在一个事务的工作完成之后,失败仍然可能发生。考虑到这种可能性,RDBMS 会向磁盘写入足够的信息,以保证即使发生故障,也可以重新创建事务的结果,并且可以适本地更新数据库。

所以从逻辑的角度来看,partially committed 状态和committed 状态是相同的。但它们的不同之处在于,在前者中,数据库本身可能并不真正反射(reflect)交易的结果。

这是一张有用的图表,显示了数据库事务的各种状态,摘自上述引用资料:

enter image description here

关于transactions - 事务中Partially Committed和Committed State有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40815921/

相关文章:

c# - 通过一笔交易选择并更新

mysql - sqlite 事务未显示在 test.log 中

sql-server - SQL Server 撤消

java - "prepareStatement(String sql)"的内部功能

mysql - 如何连接相互依赖的表

transactions - 这是使用Bitcoin-cli命令发送原始交易BTC的方法

php - 为什么mysqli open transcation锁住数据库?

java - 适用于 Android 的远程访问 RDBMS 和后端

sql - 这如何不使 varchar2 效率低下?

python - 使用带有 sqlalchemy 的 gin 索引返回排名搜索结果