华为云云数据库rds创建实例定期维护job_云淘科技

操作场景

实例运行一段时间后,由于索引碎片增加,统计信息未及时更新等会导致系统性能有所下降。建议创建定期执行的SQL agent job,定期执行索引重建、统计信息更新、数据库收缩操作。

重建索引job

启动SQL Server Managerment Studio客户端,使用rdsuser用户登录。

选择“SQL Server Agent”,右键单击“New > Job”,新建SQL agent job。

输入名字以及描述信息,单击“OK”。

选择“Steps”,单击“New”,添加执行步骤。

图1 添加执行步骤

输入步骤名称,类型及Command,完成后单击“OK”。Command中填写需要定时执行的SQL,当索引碎片达到一定程度,例如30%,可以进行重建。

图2 步骤信息

执行以下SQL,对指定的dbname中的所有表检查索引碎片超过30%后进行重建。

use [dbname]
SET NOCOUNT ON
DECLARE @Objectid INT, @Indexid INT,@schemaname VARCHAR(100),@tablename VARCHAR(300),@ixname VARCHAR(500),@avg_fip float,@command VARCHAR(4000)
DECLARE IX_Cursor CURSOR FOR
SELECT A.object_id,A.index_id,QUOTENAME(SS.name) AS schemaname,QUOTENAME(OBJECT_NAME(B.object_id,B.database_id))as tablename ,QUOTENAME(A.name) AS ixname,B.avg_fragmentation_in_percent AS avg_fip FROM sys.indexes A inner join sys.dm_db_index_physical_stats(DB_ID(),NULL,NULL,NULL,'LIMITED') AS B 
ON A.object_id=B.object_id and A.index_id=B.index_id 
INNER JOIN sys.objects OS ON A.object_id=OS.object_id
INNER JOIN sys.schemas SS ON OS.schema_id=SS.schema_id
WHERE B.avg_fragmentation_in_percent>10 and B.page_count>20 AND A.index_id>0 AND A.is_disabled1
--AND OS.name='book'
ORDER BY tablename,ixname
OPEN IX_Cursor
FETCH NEXT FROM IX_Cursor INTO @Objectid,@Indexid,@schemaname,@tablename,@ixname,@avg_fip
WHILE @@FETCH_STATUS=0
BEGIN
IF @avg_fip>=30.0
BEGIN
SET @command=N'ALTER INDEX '+@ixname+N' ON '+@schemaname+N'.'+ @tablename+N' REBUILD ';
END
--PRINT @command
EXEC(@command)
FETCH NEXT FROM IX_Cursor INTO @Objectid,@Indexid,@schemaname,@tablename,@ixname,@avg_fip
END
CLOSE IX_Cursor
DEALLOCATE IX_Cursor

上述重建的SQL只需要修改第一行(Use [dbname]),修改为指定的数据库即可。

如果需要对所有库执行,请修改SQL,添加多所有库的循环执行,此处不做详细示例。

选择“Schedules”,单击“New”,添加定时执行计划。

图3 添加定时执行计划

添加每个月执行一次的定时计划,触发时间、定时周期可以修改,完成后单击“OK”。

图4 定时执行计划

上述步骤执行完成后,job建立完毕。

图5 job

选择job,右键单击“Start Job at Step”,手动运行job,检查job是否能正常运行。

图6 运行job

运行正常,定时重建db1数据库的索引的维护job创建完毕。

更新统计信息

重复执行重建索引job中的1~4。
输入步骤名称,类型及Command,完成后单击“OK”。Command中填写更新统计信息的存储过程,存储过程的详细内容请参考更新数据库的统计信息。

图7 更新统计信息

选择“Schedules”,单击“New”,添加定时执行计划。

图8 添加定时执行计划

添加每个月执行一次的定时计划,触发时间、定时周期可以修改,完成后单击“OK”。

图9 定时执行计划

上述步骤执行完成后,job建立完毕。

图10 更新统计信息job

选择job,右键单击“Start Job at Step”,手动运行job,检查job是否能正常运行。

定时收缩数据库

重复执行重建索引job中的1~4。
输入步骤名称,类型及Command,完成后单击“OK”。Command中填写收缩数据库的SQL命令。

EXEC [master].[dbo].[rds_shrink_database_log] @dbname='myDbName';

其中@dbname参数填写数据库的名字。

选择“Schedules”,单击“New”,添加定时执行计划。

图11 添加定时执行计划

添加每个月执行一次的定时计划,触发时间、定时周期可以修改,完成后单击“OK”。

图12 定时执行计划

添加完成后,右键单击“Start Job at Step”,手动运行job,检查job是否能正常运行。

父主题: RDS for SQL Server

同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家