文档章节

数据库自动收缩带来的严重问题

o
 osc_w9s1w4o0
发布于 2019/03/29 15:20
字数 1233
阅读 9
收藏 0

精选30+云产品,助力企业轻松上云!>>>

背景

  今天早上11点的时候有客户打电话过来说医院的cis系统一直有阻塞,导致系统有卡慢的现象,信息中心的电话都快被打爆了,信息科人员很头疼啊。

万幸我们给数据库装了‘摄像头’会把数据库的一切状态操作都会记录下来,赶紧要了远程之后看到了系统确实存在大量的阻塞(下图)

 

 

通过点击紫色圆点之后发现了长长的阻塞链,(注:会话标识33的语句是阻塞的源头,下面的语句为被阻塞的语句)可以看到被阻塞的语句确实等待了很长时间,系统因为大量的阻塞,前端人员的使用确实有卡慢的现象。(下图)

 

那么系统为什么会有这么严重的阻塞呢?怎么造成的?会话标识为33的语句到底是何方神圣?接下来我们来一探究竟。

在sql server 管理工具里边用语句查询会话标识为33的语句为自动收缩的命令,看了看时间从2018年8月15号自动收缩已经开始运行,进度为79%,(下图)

 

接下来从体检项中可以看到相关数据库自动收缩配置为开启状态。

 

 

通过和医院工程师交流得知,昨天下午三点半有做过数据迁移的操作,删除了100多G的数据,(下图)

 

 

   经过分析和查询一些资料得出以下结论,数据库中的自动收缩选项在很早之前就已经开启,但是没有真正收缩过,昨天下午三点的时候删除了大量数据,触发了自动收缩数据库文件的操作,

那么为什么今天早上才有阻塞的情况呢?收缩数据库对于sql server来说本身就是一件浪费资源的事情,在昨天下午三点半的时候前端业务量减小,没有影响到业务,而到了今天早上业务量增多,达到业务高峰期,才会把业务相关的语句阻塞住,严重影响了前端人员的使用。

如何缓解及解决?

因为在收缩数据文件,要重新整理数据,进度到了79%,在这个自动过程中,数据边收缩边释放,到达100%后收缩完成后,此问题会解决。另外一种方法就是重启sql服务,事务会提交或回滚,此问题也会得到解决(不建议)

 下面来点技术性的东西,满足一下求知者的欲望……….

 

 什么是自动收缩?

 

 

随着数据量的增加数据库的设备文件(MDF\LDF)会不断增长,当数据库中的某些数据删除,数据库设备文件的大小并不会随着数据量的减少而减少,数据库设备需要占用的磁盘空间就没那么大了,这时候自动收缩就可以释放出磁盘空间,主要直观体现在数据库设备文件的大小上,避免资源的浪费.

在什么条件下会触发?

在开启自动收缩选项的情况下,SQL Server定期会检查文件使用情况。如果空闲空间大于25%,SQL Server就会自动运行自动收缩数据库文件的动作。

(附上微软官方链接:https://docs.microsoft.com/zh-cn/sql/t-sql/statements/alter-database-transact-sql-set-options?view=sql-server-2017&viewFallbackFrom=sql-server-2014

例如:数据迁移删除大量数据时,空闲空间大于25%时,会触发自动收缩功能。

带来的危害(自动收缩和手动收缩)?

对于一个磁盘空间很紧张的系统,这个设置无疑是有帮助的。但是从数据库自身的健康和性能考虑,这个设置并不建议多用。这是因为:

1、数据文件收缩导致了索引的完全碎片化,索引的效率大大降低,严重影响性能。

2、数据文件的收缩同样产生了大量的I/O操作,耗费大量的CPU资源,性能下降。

3、在业务高峰期的时候可能会造成大量的阻塞。

(附上链接资料,有兴趣的同学可以去研究一下:

https://www.cnblogs.com/kerrycode/archive/2013/06/04/3116339.html

一点点小建议:

1、不要开启自动收缩选项

2、不到万不得已,千万不要收缩数据库。收缩数据库影响极大。

3、如果磁盘空间真的不足,需要做收缩的时候,一定要手工来做,而且是在维护窗口期间;并且尽量使用语句来执行,可以提示错误;尽量一次不要收缩太多,分几次收缩。

  

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
数据库自动收缩带来的严重问题

背景   今天早上11点的时候有客户打电话过来说医院的cis系统一直有阻塞,导致系统有卡慢的现象,信息中心的电话都快被打爆了,信息科人员很头疼啊。 万幸我们给数据库装了‘摄像头’会把数...

Double_K
2019/03/29
0
0
sqlserver中为节约存储空间的收缩数据库机制

1.收缩数据库: 删除数据库的每个文件中已经分配单还没有使用的页,首座后数据库空间自动减少 2.收缩方式: (1)自动收缩数据库 选中数据库--->右击--->属性 在常规这里我们可以看到分配的大...

osc_h0k34c8y
2019/01/26
2
0
SQL SERVER LDF日志文件太大的解决方法

如何压缩日志及数据库文件大小 /--特别注意 请按步骤进行,未进行前面的步骤,请不要做后面的步骤 否则可能损坏你的数据库. 一般不建议做第4,6两步 第4步不安全,有可能损坏数据库或丢失数据 第...

osc_fhl05ph9
2019/06/06
24
0
收缩日志文件与数据文件

收缩数据文件概述:   数据库使用数据文件(扩展名是mdf 或 ndf)来存储数据,使用日志文件(扩展名是ldf)来存储事务日志,通常情况下,数据文件会持续增长,不会自动释放空闲空间,这样会...

osc_f4gmzqne
2018/05/03
0
0
sqlserver 事务日志已满解决方案

sqlserver 事务日志已满解决方案 可参考这篇博客: https://www.cnblogs.com/strayromeo/p/6961758.html 一.删除日志文件:(不建议) 二.手动收缩: 1.数据库右键属性-选项-恢复模式-下拉选...

osc_cnuamvdq
2018/06/16
9
0

没有更多内容

加载失败,请刷新页面

加载更多

macz技巧分享—macOS高端使用技巧

Macos 的占有量不如 Windows,两者之间当操作方式也有很大的不同,当很多人熱悉 Windows 的操作之后,再接触 macos,觉得难上手,其实是习惯问题。如果你学习一些技巧,会觉得 macos 其实也不...

mac小叮当
25分钟前
11
0
手把手教你如何用黑白显示器显示彩色!

来源:大数据文摘 本文约1000字,建议阅读6分钟。 本文为你介绍如何通过黑白显示器上也能显示出彩色。 原来在黑白显示器上也能显示出彩色啊!通过在监视器上覆盖拜耳滤色镜,并拼接彩色图像,...

osc_jklrr90y
25分钟前
18
0
key-value结构排序:给定一个字符串,统计每个字符出现频率,先按value降序,再按key升序

对于key-value结构的排序 第一种:lambda表达式 第二种:函数 第三种:类对()的重载,仿函数形式 #include <iostream>#include <vector>#include <unordered_map>#include <string>#in......

osc_gwtkg2dc
26分钟前
0
0
BlockChain:2020年7月10日世界人工智能大会WAIC《链智未来 赋能产业区块链主题论坛——2020全球区块链创新50强》

BlockChain:2020年7月10日世界人工智能大会WAIC《链智未来 赋能产业区块链主题论坛——2020全球区块链创新50强》 目录 世界人工智能大会WAIC《链智未来 赋能产业区块链主题论坛——2020全球...

osc_vew1u0h0
27分钟前
0
0
BlockChain:2020年7月10日世界人工智能大会WAIC《链智未来 赋能产业区块链主题论坛》(三)

BlockChain:2020年7月10日世界人工智能大会WAIC《链智未来 赋能产业区块链主题论坛》(三) 目录 2020年7月10日世界人工智能大会WAIC《链智未来 赋能产业区块链主题论坛》 演讲嘉宾 演讲内容 ...

osc_8o71811p
28分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部