SQL Server 索引重建手册

注意:
索引重建前建议把数据库切换为完整模式,否则索引复制会在数据文件中进行,导致数据文件很大,而数据文件的收缩比日志文件的收缩要困难的多,且会对业务造成影响。
步骤一:
查询索引碎片,脚本如下,库比较大时执行时间会很长,虽然对数据库影响不大,依然建议在非高峰时段执行。(执行之前请先选定要查询碎片的数据库)
Declare @dbid int
Select @dbid=DB_ID()
SELECT DB_NAME(ps.database_id) AS [Database Name], OBJECT_NAME(ps.OBJECT_ID) AS [Object Name], 
i.name AS [Index Name], ps.index_id, ps.index_type_desc, ps.avg_fragmentation_in_percent, 
ps.fragment_count, ps.page_count, i.fill_factor, i.has_filter, i.filter_definition
FROM sys.dm_db_index_physical_stats(@dbid,NULL, NULL, NULL,null) AS ps
INNER JOIN sys.indexes AS i WITH (NOLOCK)
ON ps.[object_id] = i.[object_id] 
AND ps.index_id = i.index_id
WHERE ps.database_id = DB_ID()
AND ps.index_type_desc <> 'HEAP'
AND ps.page_count > 2500
ORDER BY ps.avg_fragmentation_in_percent DESC OPTION (RECOMPILE);
步骤二:
筛选需要进行索引重建的表,举例如下:
一般来说,avg_fragmentation_in_percent大于60%就可以考虑重建了,因此本例中前10个索引都需要重建。其中index_id为1的表示是聚集索引(主键索引)。
步骤三:
!!!重要警告:操作前先备份全库,留后手永远是对自己和企业最大的负责。
索引重建的方式,我们一般采用在线重建的方式(SQL Server 2005之前的版本不支持),因此语句如下:
alter index index_name
on table_name
rebuild
with(online = on ,sort_in_tempDB = on , maxdop = 最大并行度); 
go
在这里最大并行度应当选择操作系统CPU核数的80%为宜。
此外索引重建应当遵循以下原则:
  • 为避免空间使用过多,应当对索引进行依次重建,不建议使用alter index all on table_name...的语句。
  • 如果一个表有多个索引需要重建,则重建的顺序必须为:先重建聚集索引(即主键索引),再重建非聚集索引。
步骤四:
在在线重建索引的过程中,需要观察索引重建的进度,但是online索引重建的进度并不会在sys.dm_exec_requests中显示,因此微软提供了另一种查看完成进度的方式,具体如下:
在sql profiler的Progress Report中,可以监视Online Index Operation的情况。
其中BigintData1表示已经完成的在线重建记录数,BigData2表示当前线程的序列号,只要把所有进程的max(bigdata1)之和与和表的总行数比较一下就可以大致知道目前的进度了。
注意由于每个任务分配的行数并不均匀,所以估算的结果不是很精确,不过一般不会太离谱。

转载于:https://www.cnblogs.com/leohahah/p/7652410.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/354739.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

apache camel_令人印象深刻的第一个Apache Camel版本

apache camel在准备下周的CamelOne会议时&#xff0c;我花了一些时间回顾一下Apache Camel项目的历史。 因此&#xff0c;除其他外&#xff0c;我了解了Apache Camel的第一个正式1.0版本 。 Apache Camel 1.0 – 5年前 我看的越多&#xff0c;这个版本的事实给我留下了深刻的印…

notion自建服务器,【速报】Notion的特色「双向链接」方案来了,Synced Block 登场...

Notion 作为一款出色的「聚合型」(All-In-One)笔记 App&#xff0c;在这几年里逐渐获得了不少知识工作者的宠爱。在以前&#xff0c;大家一般会高度赞扬 Notion 的「模块化」编辑器&#xff0c;但同时也会好奇什么时候 Notion 可以带来像Roam Research 那样的 「双向链接」功能…

本周Java技巧#7 – Maven慢吗?

本周Java本周技巧是有关Maven的上一期的后续内容。 第一个视频介绍了与Maven依赖关系有关的方面。 该视频将介绍一些加快Maven构建速度的技术。 Maven慢吗&#xff1f; 从Maven 3开始&#xff0c;您可以并行运行构建。 根据构建机器和项目结构的不同&#xff0c;您可能会获得6…

华北电力大学的计算机类专业排名,2018年华北电力大学王牌专业排行榜,考生和家长们都好好看看!...

华北电力大学有两个校区&#xff0c;一个是北京校区&#xff0c;一个是保定校区&#xff0c;在理科类的院校中&#xff0c;这所大学还是非常不错的&#xff0c;小编有幸去这个学校玩过几次&#xff0c;这个学校的占地面积非常大&#xff0c;环境相对比较优美&#xff0c;而且学…

算力云服务器是干啥的,云服务器将成趋势计算力和安全性是考验

云服务器是一种简单高效、安全可靠、处理能力可弹性伸缩的计算服务。通常来说&#xff0c;平台的每个集群节点被部署在互联网的骨干数据中心&#xff0c;可以独立提供计算、存储、在线备份、托管、带宽等互联网基础设施服务。关注的是高性能吞吐量计算能力&#xff0c;关注的是…

ajax后台怎么取mapp,后台管理实现

京淘后台管理实现1.1 商品列表展现1.1.1 商品POJO对象1.1.2 表格数据页面结构1.1.3 请求URL地址说明&#xff1a;如果采用UI框架并且添加了分页插件&#xff0c;则会自动的形成如下的URL请求地址1.1.4 编辑ItemController1.1.5 编辑ItemService1.1.6 编辑ItemMapper手动编辑分页…

让工厂美丽

每个名副其实的Java程序员都知道Factory Pattern 。 这是一种便捷&#xff0c;标准化的方法&#xff0c;它通过教一个组件如何捕鱼而不是将它们交给它们来减少耦合。 但是&#xff0c;在使用大型系统时&#xff0c;该模式确实会向系统添加大量样板代码。 对于每个实体&#xff…

UVa10779 - Collectors Problem(最大流)

题目链接 简介&#xff1a;交换贴纸 分析&#xff1a; 这也算是一个天坑了 很久之前就看过这道题&#xff0c;但是一直没有填 美妙的建图&#xff1a; 我们用n-1个点表示每个除Bob之外的人 用m个点表示贴纸&#xff0c;从源点向这m个点连边&#xff0c;边的容量是Bob拥有该…

华为免费虚拟服务器,免费试用虚拟服务器

免费试用虚拟服务器 内容精选换一换本节操作介绍切换虚拟私有云的操作步骤。仅支持单网卡切换虚拟私有云。切换虚拟私有云会导致云服务器网络中断。切换虚拟私有云过程中&#xff0c;请勿操作云服务器的弹性公网IP&#xff0c;或对云服务器做其他操作。切换虚拟私有云后&#x…

带有JWT示例的​​Spring Oauth2

有时以前&#xff0c;我们发表了一篇文章&#xff0c;分享了一种在云环境中实现无状态会话的自定义方法。 今天&#xff0c;让我们探讨为Spring Boot应用程序设置Oauth2身份验证的另一个流行用例。 在此示例中&#xff0c;我们将使用JSON Web令牌&#xff08;JWT&#xff09;作…

Spring源码解析-实例化bean对象

spring加载配置文件&#xff0c;AbstractApplicationContext类中的refresh方法起着重要的作用。 Overridepublic void refresh() throws BeansException, IllegalStateException {synchronized (this.startupShutdownMonitor) {// Prepare this context for refreshing.准备刷新…

java docx文档解析_带有docx4j的Java Word(.docx)文档

java docx文档解析几个月前&#xff0c;我需要创建一个包含许多表和段落的动态Word文档。 过去&#xff0c;我曾使用POI来实现此目的&#xff0c;但是我发现它很难使用&#xff0c;并且在创建更复杂的文档时对我来说效果不佳。 因此&#xff0c;对于这个项目&#xff0c;经过一…

jit即时编译_热点中的即时编译器(JIT)

jit即时编译即时编译器&#xff08;JIT&#xff09;的概念以及更广泛的自适应优化是除Java&#xff08;.Net&#xff0c;Lua&#xff0c;JRuby&#xff09;之外的许多语言中众所周知的概念。 为了解释什么是JIT编译器&#xff0c;我想先定义一个编译器概念。 根据维基百科&…

每天十分钟系列:JS数据操作之神奇的map()

Array.prototype.map() map()方法可以创建一个新数组&#xff0c;其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。 demo1 上面的例子&#xff0c;在控制台中打印的结果是&#xff1a; 1 2 3 4 5 demo2 javascript学习交流群&#xff1a;453833554 上面的例子…

使用vue-axios请求geoJson数据报错的问题

最近的项目用到了echarts一个带有散点地图的图表,按照正常jquery写法应该使用ajax请求geojson的数据动态去切换地图,就像下面这样 $.get(Js/map/ cityData.name .json, function(geoJson) {map(gr-map, cityData, geoJson, geoCoordMap);//调用地图方法}); 页面显示(成功) bu…

前端工业物联网开发(Electron + Typescript + Vue)

从SpaceX公司的带来的Javascript上天新闻开始&#xff0c;以及近几年js语言在整个互联网的广泛应用&#xff0c;注定未来js语言有着不平凡的使命&#xff0c;跨端&#xff08;一套代码多端运行&#xff09;、易UI&#xff08;前端开发UI的便利&#xff09;、丰富的生态&#xf…

JAVA记录-Servlet介绍

1.什么是Servlet Servlet是sun公司提供的一门用于开发动态web资源的技术。Sun公司在其API中提供了一个servlet接口&#xff0c;用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据)&#xff0c;需要完成以下2个步骤&#xff1a;1、编写一个Java类&#xff0c;实现…

前端jenkins打包编译发布项目流程

如今的前端项目已不像之前直接写完代码&#xff0c;扔到服务器直接运行了。免不了安装依赖&#xff0c;执行build过程&#xff0c;然后再将打包后的代码上传到服务器&#xff0c;可能还需要更改配置文件啥的。如此多的步骤严重影响开发的日常划水时间。所以jenkins自动化部署少…

OpenMap教程4 –图层

1.简介 在第一个教程中&#xff0c;我们创建了一个基本的OpenMap GIS应用程序&#xff0c;该应用程序在JFrame中显示一个从文件系统加载的具有一个形状图层的地图。 该教程基于com.bbn.openmap.app.example.SimpleMap 。 在第二篇教程中&#xff0c;我们扩展了基本应用程序以使…

Vue.js实战之Vuex的入门教程

在 Vue.js 的项目中&#xff0c;如果项目结构简单&#xff0c; 父子组件之间的数据传递可以使用 props 或者 $emit 等方式。 但是如果是大型项目&#xff0c;很多时候都需要在子组件之间传递数据&#xff0c;使用之前的方式就不太方便。Vue 的状态管理工具 Vuex 完美的解决了这…