一起学习网 一起学习网

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的访问速度,有利于提升数据库的性能。建议定期查看空间使用情况以及执行自动维护任务,来做到最佳运行效果。