【问题标题】:Does a completed COMMIT statement imply it is done committing?完成的 COMMIT 语句是否意味着它已完成提交?
【发布时间】:2019-09-19 19:56:34
【问题描述】:

一旦提交语句完成,这是否意味着它实际上已经完成了提交?还是意味着提交动作已经完成,但它仍然可以在后台提交?

【问题讨论】:

  • 您说的是两阶段提交、XA 还是普通提交?
  • 您的实际问题是什么?一旦提交完成,它就完成了,所有会话都将看到新数据。但是,DBMS 可能只是在内存中完成了这项工作,稍后会将数据写入磁盘。
  • 另外,一些参与事务的非数据库相关服务(如JMS)可能会延迟提交/回滚操作(可能使用存储转发)。

标签: sql


【解决方案1】:

是的。

一旦COMMIT 命令成功完成,操作即告完成,更改将被永久记录。没有后台进程的概念需要以某种方式完成操作。

这是the MySQL documentation的报价:

COMMIT 提交当前事务,使其更改永久化。

作为另一个例子,Oracle docs 说:

使用COMMIT 语句结束您当前的事务,并使在事务中执行的所有更改永久生效。事务是 Oracle 数据库将其视为一个单元的一系列 SQL 语句。该语句还会擦除事务中的所有保存点并释放事务锁。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-25
    • 1970-01-01
    • 2019-09-20
    • 1970-01-01
    • 2017-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多