索引碎片(自己可见)
这篇文章会解释下不同类型的碎片。理解索引碎片的概念对有效检测和移除碎片非常重要。 什么是碎片 碎片可以定义为:任何情况下,在访问一个表时,造成比适量更多的磁盘IO操作或更长的磁盘IO操作。SELECT查询的最佳操作发生在,表的数据页是尽可能连续的,而且页是尽可能完整打包(fully packed)的。碎片会破坏这个规则,降低查询的性能。碎片可以发生在2个级别。一个是文件系统级,称为逻辑/物理磁盘碎片,还有一个是索引级碎片。在下面会分别介绍。 逻辑/物理磁盘碎片 逻辑碎片是在文件系统里,数据库文件的碎片,这和其他任何文件一样。这在文件系统不能分配给数据库文件连续空间时产生。这会造成磁头从数据库文件读时需要来回移动。SQL Server对此毫不知情,也不能用任何脚本去检查逻辑磁盘碎片。逻辑磁盘碎片可以因下列原因产生: 数据库文件与其它文件(系统文件和其他应用程序文件)放在同个磁盘; 数据库文件以小块大小频繁增长 移除逻辑碎片我们可以使用系统碎片整理工具,但是注意,在进行碎片整理时,我们需要停止SQL Server,不然的话碎片整理工具会跳过数据库文件,因为它正被SQL Server使用。 避免逻辑碎片的最佳方式是: 将数据库文件放在独立的硬盘,与其他应用程序和日志文件分开。 创建新数据库的时候,估计下数据库文件的大小并分配足够的空间避免数据库文件的频繁增长。