你是否在排查运行缓慢的 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. Spring Security OAuth2之resource_id配置与验证

    一.resource_id的作用 Spring Security OAuth2 架构上分为Authorization Server认证服务器和Resource Server资源服务器.我们可以为每一个 ...

  2. PHP rsort() 函数

    实例 对数组 $cars 中的元素按字母进行降序排序: <?php$cars=array("Volvo","BMW","Toyota" ...

  3. PHP defined() 函数

    实例 检查某常量是否存在: <?phpdefine("GREETING","Hello you! How are you today?");echo de ...

  4. OKHttp 官方文档【一】

    最近工作比较忙,文章更新出现了延时.虽说写技术博客最初主要是写给自己,但随着文章越写越多,现在更多的是写给关注我技术文章的小伙伴们.最近一段时间没有更新文章,虽有工作生活孩子占用了大部分时间的原因,但 ...

  5. P2569 [SCOI2010]股票交易 dp 单调队列优化

    LINK:股票交易 题目确实不算难 但是坑点挺多 关于初值的处理问题我就wa了两次. 所以来谢罪. 由于在手中的邮票的数量存在限制 且每次买入卖出也有限制. 必然要多开一维来存每天的邮票数量. 那么容 ...

  6. Hibernate Validator校验参数全攻略

    1. 前言 数据字段一般都要遵循业务要求和数据库设计,所以后端的参数校验是必须的,应用程序必须通过某种手段来确保输入进来的数据从语义上来讲是正确的. 2. 数据校验的痛点 为了保证数据语义的正确,我们 ...

  7. ElasticSearch 基本概念 and 索引操作 and 文档操作 and 批量操作 and 结构化查询 and 过滤查询

    基本概念 索引: 类似于MySQL的表.索引的结构为全文搜索作准备,不存储原始的数据. 索引可以做分布式.每一个索引有一个或者多个分片 shard.每一个分片可以有多个副本 replica. 文档: ...

  8. 痞子衡嵌入式:为下一代智能可穿戴设备而生 - i.MXRT500

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RTxxx系列MCU的新品i.MXRT500. 自2018年i.MXRTxxx系列首款芯片i.MXRT600(主打智能语 ...

  9. python3 openssl问题(贼有用)

    目录 一.问题描述 二.排查过程 三.总结 四.写在最后 一.问题描述 在python3 执行任何的request请求时,都会报以下的错误,纵观全网,以下基本尝试过了,对于我这个是无效的,后来不知道怎 ...

  10. 移动端与Web端疫情数据展示

    1.题目要求 2.整体思想 首先是在前两阶段已经完成的echarts可视化.利用Jsoup爬取疫情数据基础上来进行调用与完善.大致思想是在Android Studio上完成交互去调用ecplise中的 ...