MSSQL 自动维护:空间收缩优化(mssql 自动收缩)
MSSQL自动维护:空间收缩优化
MS SQL Server 是一款非常受欢迎的关系数据库管理系统,为客户端和服务器提供了稳定和安全的数据处理与表结构管理功能。此外,MSSQL也具备了优化操作效率的自动维护功能,其中空间收缩优化是非常重要的。
在MSSQL中,每当有大量数据被插入,更新或删除时,表中的记录将被分散在文件组中。这样的现象,就像在水池里的鱼随着水流继续分散,严重地影响了数据库的性能。
为了克服这种情况,MSSQL提供了一项自动维护功能——空间收缩优化,它可以定期收缩表文件组中的记录,使它们变得紧密,提高数据库性能。
要实现空间收缩优化,首先需要在MSSQL控制台中安装正确的服务器维护计划:
–定期收缩表空间计划
USE master
GO
EXEC dbo.sp_clean_db_file_spaces @Reorganize=’Y’, @ShrinkDB=’Y’, @CleanDB=’Y’
GO
–为db_files添加维护计划
EXEC msdb.dbo.sp_add_jobstep
@job_name = ‘db_file_shrink’,
@command = ‘exec sp_clean_db_file_spaces @Reorganize=”Y”, @ShrinkDB=”Y”, @CleanDB=”Y”’,
@server = ‘server_name
GO
其次,通过 SQL Server Agent 任务管理来定期执行计划:
–建立任务
USE msdb;
GO
EXEC dbo.sp_add_job
@job_name = ‘db_file_shrink’,
@notify_level_eventlog = 2,
@notify_level_email = 2,
@notify_level_netsend = 2,
@notify_level_page = 2
GO
–设置任务计划
EXEC dbo.sp_add_jobschedule
@job_name = ‘db_file_shrink’,
@freq_type = 5, –5 means one time
@active_start_date = 20170518,
@active_start_time = 10000
GO
最后,切勿忘记打开空间收缩特性:
USE database_name;
GO
ALTER DATABASE database_name SET
SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO
ALTER DATABASE database_name SET
AUTO_SHRINK ON;
GO
ALTER DATABASE database_name SET
MULTI_USER;
GO
空间收缩优化是运行MSSQL必不可少的一个自动维护功能,开启这项特性能够有效的减少碎片,提高I/O的访问速度,有利于提升数据库的性能。建议定期查看空间使用情况以及执行自动维护任务,来做到最佳运行效果。