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 @   Cyber9527  阅读(14)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示