SQL Server数据库开启自动收缩引发的严重系统阻塞案例
问题:
系统卡顿,使用阻塞语句查询(参考https://vip.kingdee.com/article/88688198309596928),发现大量的阻塞。
分析:
查看阻塞,发现阻塞的会话在等待一个系统会话24(会话ID<50的为系统会话),请求锁类型为对象上的sch类型的架构锁,这种情况往往表示表结构发生改变,但这个操作是由会话24执行的,为系统会话。
检查会话24,发现执行的命令为AUTOSHRINK,时正在对数据库进行收缩操作。
并且已经执行超过7806712毫秒,只完成了30.6%
这种操作,说明数据库开启了数据库的自动收缩属性。此时通过SQL SERVER的SSMS管理工具右键打开数据库属性将可能报错。但可以通过系统表sys.databases查看is_auto_shrink_on是否为1。
如下图,1表示开启了数据库自动收缩的库,发现数据库的确打开自动收缩的属性。
到这里,问题已经明确了,这种情况下,只有不再连接SQL Server,并且把被阻塞的会话全部kill,让自动收缩命令尽快完成。
注意:千万不要去启动SQL Server服务或者关闭操作系统,否则可能导致数据重启后,由于文件不一致问题,数据库出现置疑的情况。
一点尝试:
如果文件非常大,磁盘IO能力差,这个操作花费的时间可能会非常长,怎么尽快加快回收任务的结束。可以做下面的相关尝试
1:主动执行checkpoint
2:执行dbcc checkdb()一段时间后,杀掉该会话
可以尝试2-3次,看看是否可以加快收缩会话的完成。
相关知识:
自动收缩触发时机:空闲空间大于25%
关闭自动收缩SQL:
USE [master] GO ALTER DATABASE 数据库名 SET AUTO_SHRINK OFF WITH NO_WAIT GO
正确设置:保留数据库的默认设置。千万不要去修改。 包括自动关闭参数
SQL Server数据库开启自动收缩引发的严重系统阻塞案例
本文2024-09-23 01:17:46发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-145030.html
- 鼎捷EAI整合規範文件V3.1.07 (集團).pdf
- 鼎捷OpenAPI應用場景說明_基礎資料.pdf
- 鼎捷OpenAPI應用場景說明_財務管理.pdf
- 鼎捷T100 API設計器使用手冊T100 APIDesigner(V1.0).docx
- 鼎新e-GoB2雲端ERP B2 線上課程E6-2應付票據整批郵寄 領取.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A4使用者建立權限設定.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程C3會計開帳與會計傳票.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程E6-1應付票據.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A5-1進銷存參數設定(初階篇).pdf
- 鼎新e-GoB2雲端ERP B2 線上課程D2帳款開帳與票據開帳.pdf