文档章节

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

黄裳23
 黄裳23
发布于 2016/07/12 17:34
字数 529
阅读 44
收藏 0
点赞 0
评论 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中,存储数据的最小单位是页,每一页所能容纳的数据为8060字节.而页的组织方式是通过B树结构(表上没有聚集索引则为堆结构,不在本文讨论之列)如下图: 在聚集索引B树中,只有叶子...

坦途abc
02/27
0
0
优秀的架构师各有各的优秀而平庸的却逃不过这九个方面

很可能有人花了无数精力来规划所在企业组织的IT架构,然后把这个计划交给其他人来构建和实现,随着计算环境不可避免的增长,还需要由一些人来对其进行维护。而且有可能这个链条中的某个人,在...

脱毛的程序猿
01/19
0
0
Oracle 基础篇 --- 重建B树索引对性能的影响

重建B树索引 1. 如何重建B树索引 重建索引有两种方法: * 一种是最简单的,删除原索引,然后重建; * 第二种是使用ALTER INDEX … REBUILD; 命令对索引进行重建。第二种方式是从oracle 7.3....

wangbinbin0326
2015/07/15
0
0
gulp-cached让你的gulp不再慢如牛

老项目,使用gulp来管理基础的js、css生成和打包的。其中开发模式下的gulp watch模式,效能一直都不是很高,尤其是当你的项目、代码中碎片式的代码比较多——所谓碎片式即较多的零散文件构成...

曾建凯
2016/07/05
329
0
SQL SERVER DBCC 命令集整理

DBCC CHECKALLOC 检查指定数据库的磁盘空间分配结构的一致性。 DBCC CHECKALLOC [ (database_name | database_id | 0 [ , NOINDEX | , { REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REB......

木头
2013/03/14
0
0
SqlMDF数据提取工具

1、断电导致数据库文件损坏。 2、企业管理器误删除数据表记录,账套管理器删除。 3、并闩锁错误 格式化 误删除后导致软件不能使用的情况。 4、普通数据恢复软件恢复出来的数据库不能使用的情...

jogewang123
01/11
0
0
菜鸟Sql Server优化学习笔记(1) -读SQL Server2008查询性能优化

SQL Server2008查询性能优化笔记 第一章就说到了Sql Server性能杀手,其中第一条是低质量的索引。 他的前提是在硬件和操作系统都已经优化的情况下,我的服务器内存有12G,但是sql server才用...

木星青龙
2012/10/28
0
1
SQL Server · 最佳实践 · 参数嗅探问题

摘要 MSSQL Server参数嗅探既是一个涉及知识面非常广泛,又是一个比较难于解决的课题,即使对于数据库老手也是一个比较头痛的问题。这篇文章从参数嗅探是什么,如何产生,表象是什么,会带来...

阿里云RDS-数据库内核组
2016/10/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

gRPC学习笔记

gRPC编程流程 1. proto文件定义 proto文件用于定义需要通过gRPC生成的接口,可以理解为接口定义文档 2. 通过构建工具生成服务基类代码-Maven或Gradle 3. 服务端开发 服务端实现类须实现通过构...

OSC_fly
15分钟前
0
0
Docker Mac (三) Dockerfile 及命令

Dockerfile 最近学习docker的时候,遇到一件怪事,关于docker镜像可能会被破坏,还不知道它会有此措施 所以需要了解构建Dockerfile的正确方法 Dockerfile是由一系列命令和参数构成的脚本,这些命...

___大侠
42分钟前
0
0
NetCat Tutorials

Hacking with Netcat part 1: The Basics Hacking with Netcat part 2: Bind and reverse shells Hacking with Netcat part 3: Advanced Techniques 10 Introduction to Netcat - pdf NetCat......

zungyiu
42分钟前
0
0
Android Studio+NDK+Cmake 移植FFmpeg-4.0.2命令行工具

一、编译 参考大神的帖子,亲测一次编译成功:https://blog.csdn.net/bobcat_kay/article/details/80889398 鉴于以前查文档的经验,这里附上编写例子的时间:2018年7月22日 我用的是ubantu,...

她叫我小渝
42分钟前
0
0
mysql创建数据库

登录MYSQL mysql -u root -p 脚本创建数据库WeChat,并制定默认的字符集是utf8mb4。 CREATE DATABASE Wechat DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci; 授权 grant all......

niithub
56分钟前
0
0
svn: Unable to connect to a repository URL 的解决方案

错误图示: 解决办法:清除本地保存的授权信息; 1:右键点击本地文件夹,选择设置; TortoiseSVN -> Settings 2:在弹出的对话框中选择 Saved Data, 右侧选择:授权地方清理所有。 然后点确...

宁哥实战课堂
今天
1
0
sleep与wait的区别

Thread.sleep(XXX)方法消耗CPU吗? 这个知识点是我之前认识一直有错误的一个知识点,在我以前的认识里面,我一直认为Thread.sleep(1000)的这一秒钟的时间内,线程的休眠是一直占用着CPU的时间...

码代码的小司机
今天
1
0
20位活跃在Github上的国内技术大牛 leij 何小鹏 亚信

本文列举了20位在Github上非常活跃的国内大牛,看看其中是不是很多熟悉的面孔? 1. lifesinger(玉伯) Github主页: https://github.com/lifesinger 微博:@ 玉伯也叫射雕 玉伯(王保平),...

海博1600
今天
1
0
Mybatis收集配置

一、Mybatis取Clob数据 1、Mapper.xml配置 <resultMap type="com.test.User" id="user"> <result column="id" property="id"/> <result column="json_data" property="jsonData" ......

星痕2018
今天
1
0
centos7设置以多用户模式启动

1、旧版本linux系统修改inittab文件,在新版本执行vi /etc/inittab 会有以下提示 # inittab is no longer used when using systemd. # # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON......

haha360
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部