【译】索引进阶(十三):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中的索引碎片【中篇】
原文链接:传送门. 为了讨论碎片产生的原因,以及避免和移除索引碎片的技术,我们必须从本进阶系列后续将介绍的两个章节借用一些知识点:创建/更新索引的知识,以及向一个索引表插入数据行的相关知识. 当我们讲 ...
随机推荐
- DC/OS安装
dc/os: https://dcos.io/ 安装文档-docker:https://docs.mesosphere.com/1.11/installing/oss/custom/system-re ...
- python + django + echart 构建中型项目
1. python生产环境, 多层modules 导入问题: 多个modules 如何导入不同级别的包: 在每个modules下新建 __init__.pyimport os, sys dir_myt ...
- Centos7 IPv6 Route And Dhcpv6 Server(借鉴补充)
软件:radvd.dhcp 1)启用ipv6 vi /etc/sysctl.conf net.ipv6.conf.all.disable_ipv6 = 0net.ipv6.conf.default.d ...
- java基础问题巩固(1)
你对java垃圾回收了解吗?什么时候需要使用? 答: 垃圾回收器的作用是查找和回收(清理)无用的对象,从而让jvm更 有效的使用内存.但是运行因为垃圾回收本身会有开销,过于频繁的使用会导致性能下降.比 ...
- CentOS_7下安装MySQL
卸载旧版本MySQl: 下载MySQ: MySQl官网:https://dev.mysql.com/downloads/mysql/ 版本自选,操作系统选Linux-Generic,64位系统或者32 ...
- 入坑MATLAB必会的吐血总结
本渣想回过头来整理一下MATLAB的一些基本的知识(很多东西比较琐碎,应该系统的梳理梳理),下文中没有提到的,自己用help查即可. 此文用来存个档,便于回顾. 由于matlab各版本部分语法存在差异 ...
- POJ 1848 Tree 树形DP
题目大意: 给出一棵树,现在要往这棵树上加边,使得所有的点都在环中,且每个点只能属于一个环 题解: 考虑DP: \(dp[i][0]\)表示使\(i\)这颗子树的每个点都在环内需要加的最少边数. \( ...
- [PKUWC2019]Day1 T2 你和虚树的故事
选择k个颜色,使得颜色的虚树有交的方案数 肯定要考虑连通块的贡献. 法一 https://www.cnblogs.com/xzz_233/p/10292983.html 枚举连通块还是不可行的. 枚举 ...
- vim打开退出命令
打开文件方法:cd /Users/liuchang/.jenkins/secrets && vim initialAdminPassword 退出方法:先按ESC,再输入冒号,在输入命 ...
- JS学习笔记Day20
一. 1.服务器和客户端 客户端 程序: 通过浏览器直接运行 服务器 程序: 通过安装某种服务器软件 程序才可以运行 apache php文件 ...