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 利用管理员权限登录数据库
使用回归查询功能
image

官方参考【查询存储

使用查询存储监视工作负载的最佳做法

4更改价格级别、服务级别(仅限Azure SQL Database/Azure SQL Managed Instance)

posted @ 2023-12-29 11:52  Cyber9527  阅读(19)  评论(0)    收藏  举报