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 利用管理员权限登录数据库
使用回归查询功能
官方参考【查询存储】
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?