你是否在排查运行缓慢的 web 应用程序时怀疑是数据库层造成的?以前排查数据库层需要特定的工具,现在可以使用 Visual Studio 的 Performance Explorer 中的数据库分析工具快速而轻松地排查。

  当谈到诊断 web 应用程序的性能时,我们在与开发人员的数十次交谈中了解到,应用程序的数据库层通常是导致应用程序运行缓慢的主要原因。然而,大多数解决方案都需要安装单独的工具、收集大量的SQL跟踪或修改应用程序代码来获得所需的信息。

  为了使这个过程不那么繁琐和复杂,我们在 Visual Studio 的 Performance Profiler 中开发了 Database tool,以帮助你深入了解应用程序的数据库层。你可以确切地看到在应用程序执行期间发生了哪些数据库活动的有用信息,比如哪些查询和事务运行的时间最长,每个查询使用的连接字符串,以及可能最重要的是,这些查询在代码中的何处生成。

  下面看一个简单示例,了解如何使用该工具定位代码与数据库交互的位置,并对其进行性能改进。

使用工具

  以微软的 eShopOnWeb 为例,本地部署后运行站点,并花点时间加一些商品到购物车。

  即使使用浏览器的开发人员工具,也无法准确地识别数据库查询什么时候发生,或者它是否会在操作(如上图所示的筛选目录)期间造成延迟。使用 Database tool,我们可以捕获在任何用户操作期间发生的确切数据库活动,并进行进一步研究。

  要做到这一点,我们只需打开 Performance Profiler,在Visual Studio 中通过点击 Debug > Performance Profiler 或使用快捷键 Alt + F2 打开,然后勾选“Database”复选框来启用该工具。要获得更准确的配置,需要以 Release 配置而不是 Debug 运行应用程序。然后单击 Start 启动并开始分析应用程序。

  以你感兴趣的方式与你的应用程序进行交互,然后当你准备检查数据时,单击 Visual Studio 中的“Stop Collection”。

  在收集停止后,Visual Studio 将快速处理收集到的数据,并生成一个图表,显示在分析会话期间发生的查询,以及发生查询的时间和数量。右键点击任何列标题,将显示可以帮助你排序和分析所记录的活动的可用列。这样可以非常快速地发现异常,比如只影响少数记录的长时间运行的查询,或者使用错误连接字符串的查询。

  在确定了需要进一步研究的查询之后,想要查找该查询在代码中的何处发生,只需右键点击该行并选择“Go To Source File”。

  只要有可能,该工具就会立即得到执行查询的代码行或代码块,从而省去了挖掘复杂代码库的繁琐任务。

试一试

  这个特性可以在 Visual Studio 2019 16.3 或更高版本中找到,并且支持使用 ADO.NET 或 Entity Framework Core 的 .NET Core 项目。这个工具还支持 dotnet trace,这意味着我们可以在 .NET Core 运行的任何地方收集数据(包括Linux!),并在 Visual Studio 中分析这些数据。

原文链接

  https://devblogs.microsoft.com/visualstudio/database-profiling-with-visual-studio/

最新文章

  1. mssql数据库添加,修改,删除字段
  2. nyoj133_子序列_离散化_尺取法
  3. EF框架step by step(2)—Model-First
  4. ThinkPHP eq neq if 标签
  5. ZMMR106-批量更新PO交货日期
  6. nutch http file 截断问题
  7. 最全的微软msdn原版windows系统镜像和office下载地址集锦
  8. OpenCV 安装
  9. WordPress给网站添加支付宝捐赠功能
  10. centos6.5 yum安装redis
  11. Centos7安装Zabbix4.0步骤
  12. docker+redis安装与配置,主从+哨兵模式
  13. Error:svn: E160013 svn主干切换分支时报错
  14. Python3实战系列之四(获取印度售后数据项目)
  15. [Java]Get与Post,客户端跳转与服务器端跳转
  16. #define中的“#”和“##”的作用
  17. Appium+python(1)简单的介绍环境搭建
  18. js算法-快速排序(Quicksort)
  19. 基本sql查询语句练习
  20. Python基础学习六 操作Redis

热门文章

  1. 对‘sqrt’未定义的引用
  2. Python日历模块
  3. Python 字典(Dictionary) items()方法
  4. PHP date_timezone_set() 函数
  5. 剑指 Offer 58 - II. 左旋转字符串
  6. EF Code First数据库模型及属性约束
  7. ERROR 1054 (42S22): Unknown column 'password' in 'field list'
  8. charles抓取HTTPS设置,详细踩坑版
  9. 好用的连接池-druid
  10. 原来写个Vue 首页就这么简单