【译】索引进阶(十三):SQL SERVER中的索引碎片【下篇】
原文链接:传送门。
通用碎片模式
如果一个表具有多个索引,那么这些索引便具有多个索引键,因而也具有不同的顺序。通常情况下,这些索引中的一两个展示了之前描述过的升序插入模式,而其他的通常展示了随机插入模式。
升序插入模式的候选索引包括那些最左边的索引列具有如下特征的列:
- 按年月的列,比如TransactionDate。
- 具有身份标识属性的列
- 一个带有NewSequentialId() 默认约束的唯一性标识列
当把插入和删除考虑进来时,五种通用的碎片模式复现了出来,它们中的四种会从索引维护中受益。本章的稍后会对其进行讲解,并在下一章“创建/修改/删除”对其进行进一步详细的分析。
升序插入-升序删除
升序插入-随机删除
随机插入-周期删除
随机插入-随机删除
大规模插入-无删除
预防和修复索引碎片和页分裂
本进阶系列的下一章节讨论了两种索引维护的选择,索引重建,它减少了外部碎片并使你能够对重建索引的页充满率进行控制,索引重新组织,它减少了外部碎片并增加了页的充满率。本章为了简便起见,我们使用了短语“重建索引”,你的特定的情况会决定索引重建,或者索引重新组织,哪个是更合适的选择。
本章最后一部分我们的目标是使你理解进行索引优化时你必须要有的目标。那个目标是:产生一个具有最佳的列覆盖率,最少数量的外部碎片,并在可见的未来最少的页分裂的索引。
第一个例子:
第二个例子:
第三个例子:
第四个例子:
结论
碎片可以是内部碎片也可以是外部碎片
内部碎片指的是索引页内部留下的空余空间。
外部碎片指的是索引页的逻辑顺序与物理存储位置的背离。
外部碎片能够减慢索引扫描的性能,但它对于基于一个索引键返回少量的数据行不产生影响。
内部碎片增加了索引的大小。
页分裂需要额外的开销并且导致了外部碎片,不必要的页分裂应该被避免。避免页分裂和外部碎片的最好方式是周期性的重建/重组织索引,以产生具有最佳页覆盖率,最少数量的外部碎片,以及在可见的将来具有最少数量页分裂数的索引。
【完】
【译】索引进阶(十三):SQL SERVER中的索引碎片【下篇】的更多相关文章
- c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程
c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...
- T-SQL查询进阶--理解SQL Server中索引的概念,原理以及其他
简介 在SQL Server中,索引是一种增强式的存在,这意味着,即使没有索引,SQL Server仍然可以实现应有的功能.但索引可以在大多数情况下大大提升查询性能,在OLAP中尤其明显.要完全理解索 ...
- T-SQL查询进阶--理解SQL Server中索引的概念,原理
简介 在SQL Server中,索引是一种增强式的存在,这意味着,即使没有索引,sql server仍然可以实现应有的功能,但索引可以在大多数情况下提升查询性能,在OLAP(On line Trans ...
- SQL Server中的索引
1 SQL Server中的索引 索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度.索引包含由表或视图中的一列或多列生成的键.这些键存储在一个结构(B 树)中,使 SQL Serve ...
- 转载: SQL Server中的索引
http://www.blogjava.net/wangdetian168/archive/2011/03/07/347192.html 1 SQL Server中的索引 索引是与表或视图关联的磁盘上 ...
- 【转】T-SQL查询进阶—理解SQL Server中的锁
简介 在SQL Server中,每一个查询都会找到最短路径实现自己的目标.如果数据库只接受一个连接一次只执行一个查询.那么查询当然是要多快好省的完成工作.但对于大多数数据库来说是需要同时处理多个查 ...
- T-SQL查询进阶—理解SQL Server中的锁
在SQL Server中,每一个查询都会找到最短路径实现自己的目标.如果数据库只接受一个连接一次只执行一个查询.那么查询当然是要多快好省的完成工作.但对于大多数数据库来说是需要同时处理多个查询的.这些 ...
- sql server中的索引详情
什么是索引 拿汉语字典的目录页(索引)打比方:正如汉语字典中的汉字按页存放一样,SQL Server中的数据记录也是按页存放的,每页容量一般为4K .为了加快查找的速度,汉语字(词)典一般都有按拼音. ...
- 【译】索引进阶(十二):SQL SERVER中的索引碎片【中篇】
原文链接:传送门. 为了讨论碎片产生的原因,以及避免和移除索引碎片的技术,我们必须从本进阶系列后续将介绍的两个章节借用一些知识点:创建/更新索引的知识,以及向一个索引表插入数据行的相关知识. 当我们讲 ...
随机推荐
- 如何在sqlite3连接中创建并调用自定义函数
#!/user/bin/env python # @Time :2018/6/8 14:44 # @Author :PGIDYSQ #@File :CreateFunTest.py '''如何在sql ...
- JAVA之列表
增: import java.util.ArrayList; import java.util.List; public class T{ public static void main(Stri ...
- 360大牛:全面解读PHP面试
让大家了解基本面试流程和面试的核心要求以及意义是什么并理解PHP面试考点主要以基础为核心,说明PHP面试考察范围. 有需要联系:QQ:1844912514
- Promise async-await 异步解决方案
1.简介: async和await在干什么,async用于申明一个function是异步的,而await可以认为是async wait的简写,等待一个异步方法执行完成. 2.基本语法 在C ...
- 高斯消元part2
今天整一整高斯消元的模板,正经的 高斯消元主要用于解n元一次线性方程组与判断是否有解 主要思想? 就是高斯消元啊 主要思想是理想状态下消为每行除最后一项外只有一个1,并且每行位置互异,具体看下面. 这 ...
- OpenJudge-bailian 3454 秦腾与教学评估
http://bailian.openjudge.cn/practice/3454?lang=en_US 题目 在秦腾进入北京大学学习的第一个学期,就不幸遇到了前所未有的教学评估.在教学评估期间,同学 ...
- Filebeat 日志收集器 安装和配置
Filebeat的配置文件是/etc/filebeat/filebeat.yml,遵循YAML语法.具体可以配置如下几个项目: Filebeat Output Shipper Logging(可选) ...
- CF集萃2
CF1155D - Beautiful Array 题意:给你一个序列和x,你可以选择任意一个子串(可以为空)乘上x,使得得到的序列最大子串和最大.求这个最大值.30w,2s. 解:设fi,0/1/2 ...
- python图形用户
1)使用GUI 1.GUI:Graphical user interface 2.tkinter:GUI libary for Python自带的库 3.GUI:Example 2)Ubuntu18. ...
- Python成绩
# -*- coding: utf-8 -*- """ Spyder Editor This is a temporary script file. "&quo ...