tencent cloud

云数据库 SQL Server

动态与公告
产品动态
产品公告
新手指引
产品简介
产品概述
产品架构
产品优势
应用场景
地域和可用区
大版本生命周期说明
功能概览及差异
实例类型
实例规格
存储类型
常用概念
网络环境
许可声明
购买指南
计费概述
产品价格
购买方式
续费说明
欠费说明
退费说明
按量转包年包月
调整实例费用说明
本地备份空间收费说明
跨地域备份收费说明
查看账单明细
快速入门
创建 SQL Server 实例
连接 SQL Server 实例
管理 SQL Server 实例
操作指南
约束与限制
使用规范与建议
维护管理实例
调整实例配置
只读实例
网络管理
账号管理
数据库管理
数据安全
参数配置
监控与告警
备份与回档
日志管理
发布订阅
数据集成服务(SSIS)
数据迁移(新版)
数据迁移(旧版)
数据同步(DTS)
实践教程
云数据库 SQL Server 定期维护方法
云数据库 SQL Server 慢 SQL 优化
如何更好地使用 Tempdb
跨账号备份恢复
为云数据库 SQL Server 创建 VPC
金蝶K/3 WISE 接入云数据库 SQL Server
账号权限和权限控制
变更数据捕获功能的开启和关闭
收缩数据库
API 文档
History
Introduction
API Category
Making API Requests
Sales and fee related APIs
Instance Management related APIs
Operation and maintenance management related APIs
Network management related APIs
Account management related APIs
Database management related APIs
Security group management related APIs
Data security encryption related APIs
Parameter configuration related APIs
Extended Event related APIs
Log management related APIs
Read only instance management related APIs
Publish and subscribe related APIs
Backup related APIs
Rollback related APIs
Data migration (cold standby migration) related APIs
SQL Server Integration Services (SSIS) related APIs
Data migration (DTS old version) related APIs
Data Types
Error Codes
常见问题
常见问题概览
选购咨询
计费与选购
连接与网络
账号与权限
备份与回档
数据迁移
发布订阅
只读实例
版本架构升级
磁盘扩缩容与规格升降级
监控与告警
日志相关
参数修改
功能特性相关
性能空间内存相关
相关协议
服务等级协议
服务条款
性能测试
性能测试报告
词汇表
联系我们
文档云数据库 SQL Server实践教程云数据库 SQL Server 定期维护方法

云数据库 SQL Server 定期维护方法

PDF
聚焦模式
字号
最后更新时间: 2025-12-23 10:45:45
云数据库 SQL Server 作为企业级关系型数据库,其稳定运行直接关系到业务的连续性和数据的安全性。定期维护是保障其性能、数据完整性及高可用性的核心手段。本文从定期更新统计信息和定期维护索引碎片两方面为您介绍云数据库 SQL Server 的日常维护方法。

定期更新统计信息

SQL Server 查询优化器使用统计信息来创建提高查询性能的查询计划,对于大部分查询场景而言,查询优化器能够针对较优查询计划生成对应的统计信息,但在某些场景下,需要创建新的统计信息,以便优化器获得最佳的查询计划。例如:某些数据量较大,并且数据变化较为频繁的大表,当表中数据变化的范围没有达到自动更新统计信息的阈值时,对于产生变化的范围内的数据,查询优化器可能无法创建出性能最佳的查询计划,从而导致 SQL 性能下降,使得业务受损。
针对该场景,可以通过配置 Agent 中的 Job 来定期更新表的统计信息,示例如下:




以上截图展示了为某个库中的某张表,创建了一个在每天05:00进行统计信息更新的 Job 的步骤。其中需要更新的表和定期执行的调度时间,可以根据业务自身需求来评估和修改。

定期维护索引碎片

对于数据变化比较频繁的表,表中的索引在经过长时间、反复的数据变化后,会产生索引碎片。当索引碎片较严重时,相关 SQL 查询效率也会相应降低,所以定期检查索引碎片和整理碎片是很重要的一项运维工作。
针对该场景,可以检查数据库中索引碎片超过50%的索引,并进行重建脚本。
注意:
重建索引可能会产生阻塞和较大的日志,建议在业务低峰期,并且确保在实例的存储空间足够的情况下运行。
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_disabled<>1
--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>=50.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
将以上脚本配置为定期执行的 Job,可以达到定期维护索引碎片的效果。
说明:
Job 配置方法可以参考 定期更新统计信息 中的配置方法,只需将步骤中的脚本修改为以上脚本即可。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈