SQL Server/Azure SQL Database Performance
针对 连接超时,命令执行超时, CPU高爆
1统计信息更新
1.1 数据库单位统计信息更新
如果索引和列的统计信息不是最新状态,优化器无法生成最佳查询执行计划,可能导致查询性能显著下降,消耗比平时更多的资源(CPU、内存、磁盘I/O)等现象。
因此,如果出现查询性能显著下降的情况,首先考虑手动更新索引和列的统计信息,并验证是否通过生成最佳查询执行计划来解决问题。
如果不是特定查询而是整体查询性能下降,或者无法明确确定应该更新哪个表的索引和列的统计信息,则可以考虑手动更新数据库中所有索引和列的统计信息。
EXEC sp_updatestats
go
官方参考【sp_updatestats】
1.2 表单位统计信息更新
如果只有特定的查询性能下降,并且可以确定查询所引用的表,那么考虑手动更新该表中所有的索引和列的统计信息。
UPDATE STATISTICS <表名 或 建立索引的视图名>
go
官方参考【UPDATE STATISTICS】
1.3 索引单位统计信息更新
UPDATE STATISTICS <表名 或 建立索引的视图名> <索引名>
go
例如:
UPDATE STATISTICS [dbo].[tab1] [PK_tab1]
go
官方参考【】
1.4 删除缓存在内存上的查询执行计划
DBCC FREEPROCCACHE
go
官方参考【DBCC FREEPROCCACHE】
1.5 下次运行时强制重新编译
EXEC sp_recompile N'存储过程名 或者 表名>'
go
例如:
EXEC sp_recompile N'[dbo].[sp_TEST]'
go
EXEC sp_recompile N'[dbo].[tab1]'
go
官方参考【sp_recompile】
2重建索引
通过实施索引重构并消除索引的碎片化,查询中参照的数据页数减少,磁盘I/O负荷减轻,另外,通过全扫描更新索引的统计信息,生成更最佳的查询的执行计划等因素可以提高性能。
ALTER INDEX <索引名> ON <表名> REBUILD
go
例如:
ALTER INDEX [PK_tab1] ON [dbo].[tab1] REBUILD
go
执行表“tab1”上的所有索引的重建
ALTER INDEX ALL ON [dbo].[tab1] REBUILD
go
官方参考【ALTER INDEX】
3强制执行最佳查询计划(使用查询存储来监视性能)
通过SQL Server Management Studio (SSMS) / Azure Data Studio 利用管理员权限登录数据库
使用回归查询功能

官方参考【查询存储】

浙公网安备 33010602011771号