据我所知,在Internet上阅读一些文章,SQL Server有一个存储页面的缓冲区缓存,执行insert语句时,修改后的数据只写入内存中的缓冲区,而不是磁盘。
当系统检查点到来时,所有脏页都被刷新到磁盘。
这是否意味着当我们执行insert语句并获得一切正常的返回值时,数据可能仍未写入磁盘,理论上如果在检查点之前发生系统崩溃,则脏页不会保存到磁盘我们收到的信息是一切正常,交易是否已经提交?
答案 0 :(得分:2)
没有。因为你完全忽略了机制的第二部分 - 日志文件。日志文件保留所有已更改的页面并刷新到光盘。如果发生崩溃,服务器将在启动时重播日志文件中的更改。