【译】索引进阶(十三):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中的索引碎片【中篇】
原文链接:传送门. 为了讨论碎片产生的原因,以及避免和移除索引碎片的技术,我们必须从本进阶系列后续将介绍的两个章节借用一些知识点:创建/更新索引的知识,以及向一个索引表插入数据行的相关知识. 当我们讲 ...
随机推荐
- Login Verification CodeForces - 928A (实现)
When registering in a social network, users are allowed to create their own convenient login to make ...
- openstack 5大组件之间的关系和基本架构思维导图
云计算是一种按使用量付费的模式,这种模式提供可用的/便捷的/按需的网络访问,进入可配置的计算资源共享池(资源包括网络/服务器/存储/应用软件和服务),这些资源能够被快速提供,只需投入很少的管理工作或与 ...
- "=="和 equals 方法究竟有什么区别?
"=="和 equals 方法究竟有什么区别? ==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同, 要比较两个基本类型的数据或两个引 ...
- QQ浏览器、火狐浏览器中页面有点大的问题记录
做页面时候,发现火狐和腾讯QQ浏览器有个问题,就是会将页面显示的比较大,像点了缩放比例120%似的,事实上缩放比例是100%,很奇怪. 甚至面对这个问题,连腾讯公司主页也会放大,也让我很困惑. 比如: ...
- 失去焦点布局在ios12-微信6.7.0版本以上不回滚的解决方案
微信页面input获取焦点,布局上移,失去焦点布局在ios12-微信6.7.0版本以上不回滚的解决方案: setTimeout(function(){ let scrollHeight = docum ...
- Vue.js——vue-resource
vue-resource是Vue.js的一款插件,它可以通过XMLHttpRequest或JSONP发起请求并处理响应. vue-resource使用 引入 npm install vue-reso ...
- 源码分析 ucosii/source 任务源码详细分析
分析源码: 得先学会读文档, 函数前边的 note :是了解该程序员的思想的途径.不得不重视 代码前边的 Notes,了解思想后,然后在分析代码时看他是如何具体实现的. 1. ucosii/sour ...
- Spring MVC 使用介绍(十三)数据验证 (一)基本介绍
一.消息处理功能 Spring提供MessageSource接口用于提供消息处理功能: public interface MessageSource { String getMessage(Strin ...
- centos7使用kubeadm安装部署kubernetes 1.14
应用背景: 截止目前为止,高热度的kubernetes版本已经发布至1.14,在此记录一下安装部署步骤和过程中的问题排查. 部署k8s一般两种方式:kubeadm(官方称目前已经GA,可以在生产环境使 ...
- uninitialized_copy()效果试验
根据<STL源码剖析>这段节选描述,实现如下代码进行测试 #include "2jjalloca.h" #include <vector> #include ...