SQL Server统计信息存储在数据库或缓冲池中吗?


10

只是想知道统计信息是否保存在数据库中,而不保存在内存中?如果我将数据库从生产型服务器备份/恢复到开发服务器,它是否会保持相同的统计信息,以便在开发服务器上执行计划不会有太大的不同?

Answers:


15

缓冲池是数据库的缓存。永远不会有“或”,缓冲池中的内容也总是存在于数据库中。而且,从数据库读取的任何内容都必须存在于缓冲池中,即使是暂时存在。

至于问题:统计信息在数据库中,因此备份/还原将保留统计信息。

请注意,尽管保留统计数据并不能保证计划可重复性。其他因素也会影响计划生成,例如CPU数量和RAM数量。


好的,有道理。感谢您的澄清!
Joy Walker


3

正如Remus所说,表统计信息存储在数据库中的方式与表和索引等其他对象类似。它们在选择执行计划中起着重要作用,但是还有其他因素。

话虽这么说,SQL Server知道另一种统计信息,这些统计信息为我们提供了有关最近行为的信息。

例如,DMV ys.dm_db_index_usage_statssys.dm_db_index_operational_stats返回有关如何使用索引的统计信息。

这些统计信息仅存储在内存中。服务器重新启动时会迷路,并且不会随备份一起旅行。

但是,优化器也不使用这些来生成计划。


是的,这就是为什么我首先有问题/困惑。我当时以为统计数据类似于DMV。服务器重新启动或数据库恢复到另一台服务器时,它们可能消失了。感谢您提出的观点。
Joy Walker
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.