假如您有一个盛满水的玻璃杯,您要尝试再向这个玻璃杯中加水。结果会怎样呢?水会溢出来。

  SQL Server 的情况也是如此。当索引页填充满时,如果尝试添加新行,则 SQL Server 会将大约一半的行移动到新页,以便为新添加的行腾出空间。这就是通常所说的“页面分割”。页面分割可为新记录腾出空间,但却既费时又非常耗费资源,并且会产生碎片,从而可能对 I/O 操作产生负面影响。那么,如何避免此类情况呢?

  要防止此类情况的发生,必须主动确定填充因子值。创建或重新构建索引后,填充因子值会确定每个叶级页中用于填充数据的空间百分比,其余部分留作将来扩充之用。例如,将填充因子值配置为 60 就意味着每个叶级页的 40% 都是空的,以便在向基础表中添加数据时为索引扩展提供空间。

  默认填充因子值始终是 0,此值对大多数情况都适用。一般来讲,填充因子值为 0 意味着叶级别几乎已填满,但留出了一些空间,至少能再添加一个索引行。(请注意,填充因子为 0 和 100 是相似的。)

  您可以在 CREATE INDEX 或 ALTER INDEX 语句中设置各个索引的填充因子值,也可以直接在服务器级别上配置此值,以便所有新建索引都使用默认值。

  以下示例在服务器级别将填充因子值设置为 70%,这就意味着您将有 30% 的可用空间供以后扩展使用。当然,在实施到生产环境前,必须先认真测试此选项。

  USE Master; GO SP_Configure 'show advanced options',1; GO SP_Configure 'Fill Factor', 70; GO --必须重新启动 SQL Server 引擎以使更改生效。

  如果您希望在单个索引级别上配置填充因子,应如何操作呢?假设您正在构建下表,并希望对名为 Col_A 的列创建唯一索引,且填充因子值为 70。此时该命令应类似于下面的命令:

如何检查SQL Server索引填充因子的更多相关文章

  1. SQL SERVER之填充因子

    建SQL SERVER索引的时候有一个选项,即Fillfactor(填充因子). 这个可能很少人会去注意它,但它也是比较重要的.大家可能也都知道有这个东西,但是如何去使用它,可能会比较迷糊.另外,即使 ...

  2. SQL SERVER 之 填充因子

    填充因子依附索引而存在,但创建索引,就意味着要对表进行DML时,必须处理额外的工作量(也就是对索引结构的维护)以及存储方面的IO开销. 所以创建索引时,需要考虑创建索引所带来的查询性能方面的提高,与引 ...

  3. 转: SQL Server索引的维护 - 索引碎片、填充因子

    转:http://www.cnblogs.com/kissdodog/archive/2013/06/14/3135412.html 实际上,索引的维护主要包括以下两个方面: 页拆分 碎片 这两个问题 ...

  4. SQL Server索引的维护 - 索引碎片、填充因子 <第三篇>

    实际上,索引的维护主要包括以下两个方面: 页拆分 碎片 这两个问题都和页密度有关,虽然两者的表现形式在本质上有所区别,但是故障排除工具是一样的,因为处理是相同的. 对于非常小的表(比64KB小得多), ...

  5. sql server 索引阐述系列七 索引填充因子与碎片

    一.概述 索引填充因子作用:提供填充因子选项是为了优化索引数据存储和性能. 当创建或重新生成索引时,填充因子的值可确定每个叶级页上要填充数据的空间百分比,以便在每一页上保留一些剩余存储空间作为以后扩展 ...

  6. SQL Server 索引维护(1)——如何获取索引使用情况

    前言: 在前面一文中,已经提到了三类常见的索引问题,那么问题来了,当系统出现这些问题时,该如何应对? 简单而言,需要分析现有系统的行为,然后针对性地对索引进行处理: 对于索引不足的情况:检查缺少索引的 ...

  7. SQL Server索引总结二

    从CREATE开始 通过显式的CREATE INDEX命令 在创建约束时作为隐含的对象 随约束创建的隐含索引 当向表中添加如下两种约束之一时,就会创建隐含索引. 主键约束(聚集索引) 唯一约束(唯一索 ...

  8. sql server 索引总结一

    一.存储结构 在SQL Server中,有许多不同的可用排列规则选项. 二进制:按字符的数字表示形式排序(ASCII码中,用数字32表示空格,用68表示字母"D").因为所有内容都 ...

  9. SQL Server索引碎片整理实际操作记录

    SQL Server 版本是 2008 R2. 查询数据库索引碎片情况的 SQL 语句(来源): SELECT OBJECT_NAME(ind.OBJECT_ID) AS TableName, ind ...

随机推荐

  1. stm32之开发入门

    一.开发环境配置 在开发stm32应用之前,我们需要先配置好开发环境. 首先从keil官网下载keil MDK-ARM软件包(v5版本与v4版本不同,v5版本需要下载额外的stm32芯片包)和芯片包( ...

  2. PowerDesigner 导出 Excel

    http://www.cnblogs.com/hggc/archive/2013/10/15/3369857.html

  3. [poj1144]Network(求割点模板)

    解题关键:割点模板题. #include<cstdio> #include<cstring> #include<vector> #include<stack& ...

  4. jQuery名字冲突 noConflict()方法

    今天检查项目的时候发现一个jquery变量$的控制权让渡问题,原因是: 开发这个模块的同事使用了一个日历插件,把$的控制权让出了,就导致了加载完这个页面后再加载其他页面就会报出$不是一个函数的错误. ...

  5. centos6.5安装gtk开发环境

    0.说明 由于 centos 默认的桌面是 gnome 的,我们知道gnome 的依赖库就是 gtk,而 gtk 各个版本的差异性还是很大的,所以我们需要根据 centos 的不同版本选择和 cent ...

  6. string实现

    #include<iostream> using namespace std;   class String{     friend ostream& operator<&l ...

  7. uva11584 Partitioning by Palindromes

    题目大意: 给出一个字符串,把他划分成尽量少的回文串,问最少的回文串个数 /* 先预处理所有回文子串 dp[i]表示字符1~i划分成的最小回文串的个数 */ #include<iostream& ...

  8. 洛谷P3272 [SCOI2011]地板(插头dp)

    传送门 感谢大佬的教导->这里 容易注意到,本题的合法路径“L型地板”有一些特殊的地方:拐弯且仅拐弯一次. 这由于一条路径只有两种状态:拐弯过和没拐弯过,因此我们可以尝试着这样定义新的插头: 我 ...

  9. appium自动化测试框架——自动化启动多台设备思路梳理

    今天,我们聊一聊如果自动化实现在多台设备上运行脚本. 一.首先我们回忆一下如何在一台设备上运行python脚本,一般分为三步 1.启动appium服务 2.创建驱动 3.运行python脚本 同样的, ...

  10. 笔记-JavaWeb学习之旅18

    AJAX:ASynchronous JavaScript And XML 异步的JavaScript 和XML 异步和同步:客户端和服务器端相互通信的基础上 同步:客户端操作后必须等待服务器端的响应, ...