我在执行DBCC DROPCLEANBUFFERS
之前执行CHECKPOINT
只是为了在我意识到内存中可能有脏页面时终止执行查询。建议在CHECKPOINT
之前运行DROPCLEANBUFFERS
将任何脏页写入磁盘。由于它是一个黑盒机,我不知道缓存了什么数据,即使我停止查询完成,我是否会丢失任何数据?
答案 0 :(得分:1)
这不会是个问题。 DBCC DROPCLEANBUFFERS
仅从缓冲区缓存中删除干净缓冲区。 DBCC DROPCLEANBUFFERS
不会删除脏页面(已修改的页面)。
另一方面,CHECKPOINT
将脏页(已修改的页)写入磁盘。因此,它不适用于缓冲区缓存中的Clean缓冲区。
通常,建议先发出CHECKPOINT
将脏页写入磁盘,这样缓冲区缓存中只有干净的缓冲区。然后发出DBCC DROPCLEANBUFFERS
,它会删除所有缓冲区在缓冲区缓存中。
您可以在MSDN
了解详情