分析,SQL Server 的真空等价物?

adi*_*per 6 sql-server statistics

在 Postgres 中,ANALYZE收集有关数据库中表内容的统计信息,并将其存储。这些统计信息用于确定 PG 中最有效的查询计划。运行analyze命令提高了数据库的性能。我想知道 SQL Server 中是否有类似的东西。

SQL Server 是否具有与 Postgres'Analyze和等效的命令Vacuum

如果 SQL Server 没有完全等效的命令,是否有类似的命令?

如果这些命令确实有 SQL Server 版本,请解释它们或张贴有用文档的链接。

Vla*_*nov 8

据我了解,大致相当于ANALYZE将是UPDATE STATISTICS

更新表或索引视图的查询优化统计信息。默认情况下,查询优化器已经根据需要更新统计信息以改进查询计划;在某些情况下,您可以通过使用 UPDATE STATISTICS 或存储过程 sp_updatestats 比默认更新更频繁地更新统计信息来提高查询性能。

经常自动更新统计信息就足够了,但我遇到了一些必须手动更新以获得良好查询计划的情况。一种常见的情况是,当行被添加到一个大表中时,新行的值范围位于现有统计直方图之外,即所谓的Ascending Key Problem


大致相当于VACUUM FULL收缩数据库的命令。

收缩数据文件通过将数据页从文件末尾移动到靠近文件前面的未占用空间来恢复空间。当在文件末尾创建了足够的可用空间时,文件末尾的数据页可以被释放并返回到文件系统。

在许多情况下,缩小数据库是一个坏主意。

https://www.brentozar.com/archive/2009/08/stop-shrinking-your-database-files-seriously-now/

什么时候可以收缩数据库?

该功能在那里,但它应该用于解决一些非常具体的问题。


正如@dezso在评论中指出的那样,简单VACUUM命令仅将页面标记为可在同一个表中重复使用,它不会压缩文件。SQL Server 通过Ghost 清理后台进程自动执行此操作。实际上,可以将其关闭。因此,看起来这个 Ghost 清理过程大致相当于一个简单的VACUUM.