Sql server SQL Server事务,未提交的数据保存在哪里?

Sql server SQL Server事务,未提交的数据保存在哪里?,sql-server,memory-management,transactions,Sql Server,Memory Management,Transactions,我的问题涉及如何在SQL Server中处理事务 假设我有一个包含大量数据的用户定义事务,在这个过程中,这些数据存储在哪里?只有当事务成功时,它才会提交到数据库文件中,但它事先驻留在何处 它是否保留在创建事务的程序的内存中 到SQL server内存进程 它是否写入数据库的事务日志 临时文件或其他磁盘位置 未提交的数据被写入相关的表中,在事务提交之前,它不会被标记为已提交。如果事务回滚,则下次发生需要受影响页面的写入时,数据将被覆盖。一旦事务提交,表中的数据将被提交,并且不能被覆盖。日志包含数

我的问题涉及如何在SQL Server中处理事务

假设我有一个包含大量数据的用户定义事务,在这个过程中,这些数据存储在哪里?只有当事务成功时,它才会提交到数据库文件中,但它事先驻留在何处

  • 它是否保留在创建事务的程序的内存中
  • 到SQL server内存进程
  • 它是否写入数据库的事务日志
  • 临时文件或其他磁盘位置

未提交的数据被写入相关的表中,在事务提交之前,它不会被标记为已提交。如果事务回滚,则下次发生需要受影响页面的写入时,数据将被覆盖。一旦事务提交,表中的数据将被提交,并且不能被覆盖。日志包含数据库中正在发生的情况的持续记录,以便在系统崩溃后或事务回滚时,可以向后或向前滚动事务

SQL Server使用预写日志记录。有关详细信息,请参阅。预写日志记录要求对日志记录中描述的eb数据进行每一次更改,以便崩溃恢复可以重建数据库。要回滚事务,只需向后遍历日志,并为事务生成的每个记录生成一个补偿操作。这实际上会撤消事务所做的一切。将确保补偿操作始终可以自由进行

当然,也请参见