客户端将事务发送到数据库,如下所示:
begin transaction
sql1
sql2
sql3
...
end transaction (commit)
从我的角度来看,数据库将遵循以下步骤:
- 第一步:一个接一个地接收命令
- 第2步:在内存中一个接一个地执行命令
- 第3步:将结果从内存保存到磁盘(重做日志)
- Step4:在接收到提交命令时在日志中添加提交标志
- 第5步:对客户的响应成功确认
我的问题:
- 上面的描述正确无误吗?
- 如果正确正确,那么在步骤4和步骤5之间数据库崩溃时会发生什么?在这种情况下,事务成功提交,但是客户端未收到提交成功确认。因此客户无法判断交易是否成功提交。