文档章节

你的SQL Server碎片真的需要重新构建(Rebuild)或者重新组织(Recognize)吗?

黄裳23
 黄裳23
发布于 2016/07/12 17:34
字数 529
阅读 47
收藏 0

最近负责的项目在客户那出了一个问题

场景:服务端会定期删除过期的数据,可能,客户的服务器器在删除数据的时点,Service down了

问题:删除没有执行,大量数据残留,导致磁盘空间不足,用户的动作执行缓慢,受阻

和领导负责一块研究解决问题的过程中,解决方案是定期删除残留的数据,并压缩日志文件。

同时领导带出了一个索引碎片的问题,说索引碎片会影响大量数据的查询,本来,这个数据库的变更就很少,服务端的操作主要就是查询。

经过试验证明,简单的Select查询, 索引碎片 不会有太大的影响,以下是验证的过程:

1. 新建数据库,模拟应用程序的数据,通过SqlBulkCopy快速插入超过3个月的数据,大概20G。

2. 查看索引碎片率:45%。

3. 通过查询分析+select语句获取了3天,1周,1个月,3个月的数据,统计花费的时间

SET STATISTICS profile ON
SET STATISTICS io ON
SET STATISTICS time ON
go
  ---你要测试的sql语句
SELECT *  FROM [UniversalSchool].[dbo].[Student] where StudentID = 35 AND Datetime BETWEEN cast('2017-01-01 00:00:00.000' as datetime) and cast('2017-04-01 00:00:00.000' as datetime);       
SET STATISTICS profile OFF
SET STATISTICS io OFF
SET STATISTICS time OFF
go

结果:

★ 3天
5219 毫秒。

★ 1周
11245 毫秒。

★ 1月
51478 毫秒。

★ 3月
175508 毫秒。

4. 通过以下命令将索引重新构建

sqlcmd -E -S (local)\DBTEST -Q "use  UniversalSchool ;ALTER INDEX ALL ON  Student REBUILD"

5.  查看索引碎片率:0.12%。

6. 再执行第3.步,统计结果

★ 3天
5222 毫秒。

★ 1周
10724 毫秒。

★ 1月
50237 毫秒。

★ 3月
164040 毫秒。

从3和6的统计结果来看,我是不是完全没必要去重构索引了呢?

© 著作权归作者所有

共有 人打赏支持
黄裳23
粉丝 2
博文 53
码字总数 9420
作品 0
西安
高级程序员
私信 提问
提升SQL Server速度 整理索引碎片

数据库表A有十万条记录,查询速度本来还可以,但导入一千条数据后,问题出现了。当选择的数据在原十万条记录之间时,速度还是挺快的;但当选择的数据在这一千条数据之间时,速度变得奇慢。 ...

SANSOM
2013/11/08
0
0
《SQL Server 2008从入门到精通》--20180723

目录 1.架构 1.1.创建架构并在架构中创建表 1.2.删除架构 1.3.修改表的架构 2.视图 2.1.新建视图 2.2.使用视图修改数据 2.3.删除视图 3.索引 3.1.聚集索引 3.2.非聚集索引 3.3.创建索引 3.4....

kukubear0
2018/07/24
0
0
索引,索引的建立、修改、删除

索引 索引是关系数据库中用于存放每一条记录的一种对象,主要目的是加快数据的读取速度和完整性检查。建立索引是一项技术性要求高的工作。一般在数据库设计阶段的与数据库结构一道考虑。应用...

恋空御月
2016/05/17
4
0
索引碎片与填充因子

在SQL Server中,存储数据的最小单位是页,每一页所能容纳的数据为8060字节.而页的组织方式是通过B树结构(表上没有聚集索引则为堆结构,不在本文讨论之列)如下图: 在聚集索引B树中,只有叶子...

坦途abc
2018/02/27
0
0
RDS for SQL server 空间问题排查汇总

SQL server的空间问题一直有客户在询问,今天就给大家汇总讲解下SQL server 的全部空间开销。 SQL server 的空间组成 从文件类型来看,SQL server 的文件类型分数据文件(MDF,NDF),日志文件...

马弓手三菜
2018/10/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Navicat使用教程:使用Navicat Premium 12自动执行数据库复制(二)

下载Navicat Premium最新版本 Navicat Premium是一个可连接多种数据库的管理工具,它可以让你以单一程序同时连接到MySQL、Oracle及PostgreSQL数据库,让管理不同类型的数据库更加的方便。 与...

电池盒
25分钟前
1
0
简单聊聊Linux学习经历

学习,是我们一生中都规避不了的一个话题,人的一生中都是在不断的学习,无论是功成名就的人士,还是一无是处的小混混,始终都处在一个不断学习的环境中,只是学习的内容千差万别,有的人是为...

linux-tao
25分钟前
1
0
如何才能从程序员成长为实战型架构师?必掌握这7大实战技能经验

想成为一名架构师,但是架构师对应的技能,我应该掌握哪些啊?以及掌握的程度是什么样的?如何成为一名真正的实战性架构师? 我简要分为以下7点来谈谈,从技能的角度抛砖引玉,希望你对你架构...

mikechen优知
37分钟前
2
0
vue里实现echarts中国地图

echartsDemo.vue <template> <div> <div id="chart_example"></div> </div></template><script> // 首先要 cnpm install echarts import echarts from 'echarts' import ......

Danni3
48分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部