我正在为 70-432 (SQL Server 2008) 考试学习,我对事务日志的工作原理有点困惑。
据我了解,(如果我错了请纠正我......)日志主动存储在内存中并尽可能频繁地复制到驱动器上的文件中。在每个检查点,完整的事务被提交到硬盘驱动器上的数据文件(也就是说,直到检查点它们才真正写入驱动器)。尾部始终保存尚未提交的事务。
当灾难发生时,您尝试备份日志的“尾部”。是存储在文件中,还是要从内存中转储?我知道这并不总是可行的,但强烈建议您尝试这样做。
我的理解对吗?
我正在为 70-432 (SQL Server 2008) 考试学习,我对事务日志的工作原理有点困惑。
据我了解,(如果我错了请纠正我......)日志主动存储在内存中并尽可能频繁地复制到驱动器上的文件中。在每个检查点,完整的事务被提交到硬盘驱动器上的数据文件(也就是说,直到检查点它们才真正写入驱动器)。尾部始终保存尚未提交的事务。
当灾难发生时,您尝试备份日志的“尾部”。是存储在文件中,还是要从内存中转储?我知道这并不总是可行的,但强烈建议您尝试这样做。
我的理解对吗?
事务在被认为已提交到数据库之前总是在事务日志中固定到磁盘。另一方面,缓冲区缓存确实存在于内存中,并反映在事务日志中提交和强化事务后数据库的当前状态。缓冲区高速缓存在检查点期间刷新到磁盘。
由于它存在于 RAM 中,系统故障可能会导致存储在缓冲区缓存中(尚未刷新到磁盘)的信息丢失。由于缓冲区缓存中的所有内容都存储在事务日志中,因此 SQL 能够恢复所有已提交但在故障点尚未刷新到数据文件的事务。
在这里阅读:http: //msdn.microsoft.com/en-us/library/ms345419 (SQL.105).aspx