【译】索引进阶(十三):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中的索引碎片【中篇】
原文链接:传送门. 为了讨论碎片产生的原因,以及避免和移除索引碎片的技术,我们必须从本进阶系列后续将介绍的两个章节借用一些知识点:创建/更新索引的知识,以及向一个索引表插入数据行的相关知识. 当我们讲 ...
随机推荐
- python 绘制柱状图
python 绘制柱状图 import matplotlib.pyplot as plt import numpy as np # 创建一个点数为 8 x 6 的窗口, 并设置分辨率为 80像素/每英 ...
- 【MySQL 读书笔记】SQL 刷脏页可能造成数据库抖动
开始今天读书笔记之前我觉得需要回顾一下当我们在更新一条数据的时候做了什么. 因为 WAL 技术的存在,所以当我们执行一条更新语句的时候是先写日志,后写磁盘的.当我们在内存中写入了 redolog 之后 ...
- DAY30、网络编程
一.网络编程 软件开发 c/s架构 c:客户端 s:服务端 b/s架构 b:浏览器 s:服务端 本质:b/s其实也是c/s 服务端:24小时不间断提供服务,谁来救服务谁 客户端:想什么时候体验服务,就 ...
- MySQL之B+树索引(转自掘金小册 MySQL是怎样运行的,版权归作者所有!)
每个索引都对应一棵B+树,B+树分为好多层,最下边一层是叶子节点,其余的是内节点.所有用户记录都存储在B+树的叶子节点,所有目录项记录都存储在内节点. InnoDB存储引擎会自动为主键(如果没有它会自 ...
- linux 下修改etc/profile文件
etc/profile文件是只读的,直接用vi或gedit打开修改后是无法保存的.要修改profile,需要取得root权限,(使用gedit编辑) 1. su root 输入密码 进入root模 ...
- 一本通网站 1378:最短路径(shopth)
[题目描述] 给出一个有向图G=(V, E),和一个源点v0∈V,请写一个程序输出v0和图G中其它顶点的最短路径.只要所有的有向环权值和都是正的,我们就允许图的边有负值.顶点的标号从1到n(n为图G的 ...
- 洛谷P3719 REXP 题解
题目 一道考验递归的题目,在面对这种字符串处理的题时,还是应该用递归这种比较好看懂而且比较简单写的算法. \(code\) ```c++ // luogu-judger-enable-o2 inclu ...
- Go中的iota
当时在学习Iota这个知识点的时候仅仅是一笔掠过,比如这种 const( a=iota b c ) 一眼看出他怎么使用的时候就觉得自己已经懂得了 再到后来看到这样的例子 const( a = 5*io ...
- .Net Core实践3 配置文件
环境 .netcore2.1 / vs2017 / win10 / centos7 在.netcore项目中读取配置文件,先添加应用程序配置文件App.config.这个是类库项目的配置文件名. Sy ...
- kubernetes 1.14安装部署dashboard
简单介绍: Dashboard是一个基于web的Kubernetes用户界面.您可以使用Dashboard将容器化应用程序部署到Kubernetes集群,对容器化应用程序进行故障诊断,并管理集群资源. ...