文档章节

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

黄裳23
 黄裳23
发布于 2016/07/12 17:34
字数 529
阅读 45
收藏 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
索引,索引的建立、修改、删除

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

恋空御月
2016/05/17
4
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
07/24
0
0
索引碎片与填充因子

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

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

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

马弓手三菜
10/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql load data 批量导入使用

最近在研究使用mycat,其中有使用批量数据导入,简单记录一下使用方式。 查看系统属性 mysql>show variables like '%secure%'+--------------------------+-----------------------+| Vari...

FansinZhao
10分钟前
0
0
浅谈React的最大亮点——虚拟DOM

在Web开发中,需要将数据的变化实时反映到UI上,这时就需要对DOM进行操作,但是复杂或频繁的DOM操作通常是性能瓶颈产生的原因,为此,React引入了虚拟DOM(Virtual DOM)的机制。 一、什么是...

peakedness丶
13分钟前
0
0
下一代大数据处理引擎,阿里云实时计算独享模式重磅发布

摘要: 11月14日,阿里云重磅发布了实时计算独享模式,即用户独享一部分物理资源,这部分资源在网络/磁盘/CPU/内存等资源上跟其他用户完全独立,是实时计算在原有共享模式基础上的重大升级。...

阿里云官方博客
18分钟前
0
0
Spring MVC 测试样例

1、需要javax.servlet-api V3.0以上支持 <!--3.0以上版本--> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-......

jcc_codingBoy
20分钟前
2
0
kettle增量同步oracle数据到mysql

kettle增量同步oracle数据到mysql 适合表中有更新时间的字段 kettle安装 绿色,下载后解压即可(略), -> Download 连接数据库 需要导入jdbc相关驱动jar包到lib目录(oracle、mysql对应jar...

o00o
24分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部