我的问题与 SQL Server 中的事务处理方式有关。
假设我有一个包含大量数据的用户定义事务,在该过程中这些数据存储在哪里?如果事务成功,它只提交到数据库文件,但它预先驻留在哪里。
- 是否保留在创建事务的程序的内存中
- 到 SQL server 内存进程
- 是否写入数据库的事务日志?
- 临时文件或其他磁盘位置?
我的问题与 SQL Server 中的事务处理方式有关。
假设我有一个包含大量数据的用户定义事务,在该过程中这些数据存储在哪里?如果事务成功,它只提交到数据库文件,但它预先驻留在哪里。
未提交的数据被写入有问题的表中,在事务提交之前它不会被标记为已提交。如果事务回滚,则数据将在下一次发生需要受影响页面的写入时被覆盖。一旦事务提交,表中的数据就被提交并且不能被覆盖。该日志包含数据库中正在发生的事情的持续记录,以便在系统崩溃或事务回滚后可以向后或向前回滚事务。
SQL Server 使用ARIES预写日志记录。工作原理:Bob Dorr 的 SQL Server I/O 演示中描述了详细信息。预写日志记录要求对日志记录描述的 eb 数据所做的每一次更改,以便崩溃恢复可以重建数据库。要回滚事务,只需将日志向后走,并为事务生成的每条记录生成一个补偿操作。这实际上将撤消事务所做的一切。两相锁定将确保补偿操作始终可以自由进行。