您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 订阅
  捐助
SQL Server的性能调优:解决查询速度慢的五种方法
 
作者:takumiCX
  3326  次浏览      21
2020-6-28 
 
编辑推荐:

本文主要通过一下几个方面介绍:使用SQL DMV查找慢速查询、通过APM解决方案查询报告、SQL Server扩展事件、SQL Azure查询性能洞察等相关内容。
本文来自博客园,由火龙果软件Anna编辑、推荐。

1.使用SQL DMV查找慢速查询

SQL Server的一个重要功能是内置于其中的所有动态管理视图(DMV)。它们有数十种,可以提供有关各种主题的丰富信息。

有几个DMV提供有关查询统计信息,执行计划,最近查询等的数据。这些可以一起使用,以提供一些惊人的见解。

例如,下面的查询可用于查找使用最多读取,写入,工作时间(CPU)等的查询。

查询结果如下所示。下面的图片来自我制作的营销应用程序。您可以看到一个特定查询(前一个)占用了所有资源。

通过查看此内容,我可以复制该SQL查询,看看是否有某种方法可以改进它,添加索引等。

优点:始终可用的基本汇总统计信息。缺点:不告诉你调用查询的是什么。无法在查看随时间调用查询时进行可视化。

2.通过APM解决方案查询报告

许多应用程序性能管理 (APM)工具的一个重要特性是它们能够跟踪SQL查询。例如, Retrace跟踪多个数据库提供程序(包括SQL Server)的SQL查询。

Retrace可以告诉您查询执行了多少次,平均需要多长时间以及调用它的事务。这对于SQL性能调优来说是非常有价值的信息。

APM解决方案通过在运行时针对应用程序代码执行轻量级性能分析来收集此数据。

以下是Retrace应用程序仪表板的屏幕截图,其中显示了特定应用程序,哪些SQL查询占用时间最长。

回归热门SQL查询

Retrace收集有关正在执行的每个SQL查询的性能统计信息。您可以搜索特定查询以寻找潜在问题。

RETRACE查看所有SQL查询

通过选择单个查询,您可以查看该查询随时间调用的频率以及所需的时间。您还可以查看哪些网页使用SQL查询以及它们的性能如何受其影响。

随着时间的推移回溯SQL性能

由于Retrace是一个轻量级代码分析器并捕获ASP.NET请求跟踪,因此它甚至可以向您显示代码正在执行的操作的完整上下文。

下面是一个捕获的跟踪,它显示了所有SQL查询以及有关代码执行操作的其他详细信息。Retrace甚至可以在同一视图中显示日志消息。另请注意,它显示了正在执行查询的服务器地址和数据库名称。您还可以查看返回的记录数。

回溯WEB事务跟踪

如您所见,Retrace提供全面的SQL报告功能,作为其APM功能的一部分。它还提供围绕SQL查询的多个监视和警报功能。

优点:跨应用程序,每个应用程序和每个查询的详细报告。可以显示详细说明查询使用方式的事务跟踪。每月只需10$。一旦安装就一直运行。缺点:不提供每个查询的读取或写入次数。

3. SQL Server Profiler(已弃用!)

在SQL Server Profiler中已经存在了很长一段时间。如果您试图实时查看针对您的数据库执行的SQL查询,那么它非常有用。

注意:Microsoft已宣布SQL Server Profiler已被弃用!

SQL事件探查器捕获有关您与SQL Server交互的非常详细的事件。

登录连接,断开连接和失败

SELECT,INSERT,UPDATE和DELETE语句

RPC批处理状态调用

存储过程的开始和结束

存储过程中语句的开始和结束

SQL批处理的开始和结束

写入SQL Server错误日志的错误

在数据库对象上获取或释放的锁

一个打开的光标

安全权限检查

SQL SERVER PROFILER

优点:非常详细的数据。缺点:你必须手动打开它。这会强制您重新创建要捕获的场景。它最终会转向支持扩展事件。

4. SQL Server扩展事件

SQL事件探查器已被SQL Server扩展事件替换。这肯定会激怒很多人,但我可以理解为什么微软会这样做。

扩展事件通过事件跟踪(ETW)工作。这是所有Microsoft相关技术公开诊断数据的常用方法。

ETW提供了更大的灵活性。作为开发人员,我可以轻松地从SQL Server中获取ETW事件以收集用于自定义用途的数据。这真的很酷,非常强大。

优点:更容易启用和运行。更容易开发定制解决方案。缺点:因为它是相当新的,大多数人可能没有意识到它。

5. SQL Azure查询性能洞察

我将假设SQL Azure的性能报告是建立在扩展事件之上的。在Azure门户中,您可以访问各种非常有用的性能报告和优化提示。

注意:这些报告功能仅适用于SQL Azure上托管的数据库。

在下面的屏幕截图中,您可以看到SQL Azure如何轻松使用使用最多CPU,Data IO和Log IO的查询。它内置了一些很棒的基本报告。

SQL AZURE热门查询

您还可以选择单个查询并获取更多详细信息以帮助进行SQL性能调整。

SQL AZURE查询详细信息

优点:很棒的基本报告。缺点:仅适用于Azure。没有跨多个数据库的报告。

总结

下次需要使用SQL Server进行一些性能调整时,您可以考虑使用一些选项。可能的情况是,您将使用多个这些工具,具体取决于您要完成的任务。

如果您使用的是像Retrace这样的APM解决方案,请务必检查它内置的SQL性能功能

 

   
3326 次浏览       21
相关文章

基于EA的数据库建模
数据流建模(EA指南)
“数据湖”:概念、特征、架构与案例
在线商城数据库系统设计 思路+效果
 
相关文档

Greenplum数据库基础培训
MySQL5.1性能优化方案
某电商数据中台架构实践
MySQL高扩展架构设计
相关课程

数据治理、数据架构及数据标准
MongoDB实战课程
并发、大容量、高性能数据库设计与优化
PostgreSQL数据库实战培训
最新课程计划
信息架构建模(基于UML+EA)3-21[北京]
软件架构设计师 3-21[北京]
图数据库与知识图谱 3-25[北京]
业务架构设计 4-11[北京]
SysML和EA系统设计与建模 4-22[北京]
DoDAF规范、模型与实例 5-23[北京]
 
最新文章
InfluxDB概念和基本操作
InfluxDB TSM存储引擎之数据写入
深度漫谈数据系统架构——Lambda architecture
Lambda架构实践
InfluxDB TSM存储引擎之数据读取
最新课程
Oracle数据库性能优化、架构设计和运行维护
并发、大容量、高性能数据库设计与优化
NoSQL数据库(原理、应用、最佳实践)
企业级Hadoop大数据处理最佳实践
Oracle数据库性能优化最佳实践
更多...   
成功案例
某金融公司 Mysql集群与性能优化
北京 并发、大容量、高性能数据库设计与优化
知名某信息通信公司 NoSQL缓存数据库技术
北京 oracle数据库SQL优化
中国移动 IaaS云平台-主流数据库及存储技术
更多...