你是否在排查运行缓慢的 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/

【译】Database Profiling with Visual Studio的更多相关文章

  1. .NET Memory Allocation Profiling with Visual Studio 2012

    .NET Memory Allocation Profiling with Visual Studio 2012 This post was written by Stephen Toub, a fr ...

  2. Solve: Your project references the latest version of Entity Framework (for MySQL) in Visual Studio 2013

    The error message while trying to create a ADO.net Entity Data Model ( Entity Framework 6 ) for MySq ...

  3. Miscosoft Visual Studio项目guid取值

    There isn't an easy way to change the type of a project in Visual Studio project once it is created; ...

  4. [转]Visual Studio 项目类型 GUID 清单

    转自:https://www.codeproject.com/Reference/720512/List-of-Visual-Studio-Project-Type-GUIDs Complete li ...

  5. [转]List of Visual Studio Project Type GUIDs

    本文转自:http://www.codeproject.com/Reference/720512/List-of-Visual-Studio-Project-Type-GUIDs There isn' ...

  6. 【译】Visual Studio 15 预览版更新说明

    序:恰逢Build2016大会召开,微软发布了VS2015的update2更新包和VS2016预览版.本人正在提升英文水平中,于是在这里对VS2016预览版的官方文档进行了部分翻译.因为VS有些功能使 ...

  7. Visual Studio 2012创建SQL Server Database Project提示失败解决方法

    新建一个SQL Server Database Project,提示: Unable to open Database project This version of SQL Server Data ...

  8. 【广州.NET社区推荐】【译】Visual Studio 2019 中 WPF & UWP 的 XAML 开发工具新特性

    原文 | Dmitry 翻译 | 郑子铭 自Visual Studio 2019推出以来,我们为使用WPF或UWP桌面应用程序的XAML开发人员发布了许多新功能.在本周的 Visual Studio ...

  9. 项目管理实践【六】自动同步数据库【Using Visual Studio with Source Control System to synchronize database automatically】

    在上一篇项目管理实践[五]自动编译和发布网站中,我们讲解了如何使用MSBuild+Robocopy+WebDeployment来自动编译和部署网站,今天,我们来看一下,如何使用MSBuild +SVN ...

随机推荐

  1. vector STL

    高呼“STL大法好!!” vector 是一个不限定容量的数组. 先说一下头文件 #include<vector> 1.声明 vector<int>v1;//vector元素为 ...

  2. RHEL7配置ip地址

    通过修改ifcfg-eno16777728配置文件来修改配置ip 网卡命令格式:eno16777728 en:代表enthernet(以太网) o:代表onboard(内置) 16777728:是主板 ...

  3. Day03_SpringCloud2

    学于黑马和传智播客联合做的教学项目 感谢 黑马官网 传智播客官网 微信搜索"艺术行者",关注并回复关键词"乐优商城"获取视频和教程资料! b站在线视频 0.学习 ...

  4. PHP array_intersect_ukey() 函数

    实例 比较两个数组的键名(使用用户自定义函数比较键名),并返回交集: <?phpfunction myfunction($a,$b){if ($a===$b){return 0;}return ...

  5. PHP exp() 函数

    实例 返回 'e' 的不同次方: <?phpecho(exp(0) . "<br>");echo(exp(1) . "<br>") ...

  6. PDOStatement::bindColumn

    PDOStatement::bindColumn — 绑定一列到一个 PHP 变量(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0) 说明 语法 bool PDOSta ...

  7. layer.js : n.on is not a function

    当时使用的jQuery为1.4.x的版本.换成高版本就好了. 参考 https://blog.csdn.net/marswill/article/details/69316003

  8. Elasticsearch入门指南

    好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star,更多文章请前往:目录导航 这篇文章主要是记录一下最近在学的 ...

  9. mnist手写数字识别——深度学习入门项目(tensorflow+keras+Sequential模型)

    前言 今天记录一下深度学习的另外一个入门项目——<mnist数据集手写数字识别>,这是一个入门必备的学习案例,主要使用了tensorflow下的keras网络结构的Sequential模型 ...

  10. 微信小程序--家庭记账小账本(四)

    今天的进展不太顺利,总的账单表,代码改了又改,最后决定用一个新的表,账单界面中弄了一天删除,发现都无法实现想要的效果,于是把账单界面的删除功能去了,就感觉大功告成的时候,发现收入和支出界面的删除也出现 ...