【译】Database Profiling with Visual Studio
你是否在排查运行缓慢的 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的更多相关文章
- .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 ...
- 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 ...
- 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; ...
- [转]Visual Studio 项目类型 GUID 清单
转自:https://www.codeproject.com/Reference/720512/List-of-Visual-Studio-Project-Type-GUIDs Complete li ...
- [转]List of Visual Studio Project Type GUIDs
本文转自:http://www.codeproject.com/Reference/720512/List-of-Visual-Studio-Project-Type-GUIDs There isn' ...
- 【译】Visual Studio 15 预览版更新说明
序:恰逢Build2016大会召开,微软发布了VS2015的update2更新包和VS2016预览版.本人正在提升英文水平中,于是在这里对VS2016预览版的官方文档进行了部分翻译.因为VS有些功能使 ...
- Visual Studio 2012创建SQL Server Database Project提示失败解决方法
新建一个SQL Server Database Project,提示: Unable to open Database project This version of SQL Server Data ...
- 【广州.NET社区推荐】【译】Visual Studio 2019 中 WPF & UWP 的 XAML 开发工具新特性
原文 | Dmitry 翻译 | 郑子铭 自Visual Studio 2019推出以来,我们为使用WPF或UWP桌面应用程序的XAML开发人员发布了许多新功能.在本周的 Visual Studio ...
- 项目管理实践【六】自动同步数据库【Using Visual Studio with Source Control System to synchronize database automatically】
在上一篇项目管理实践[五]自动编译和发布网站中,我们讲解了如何使用MSBuild+Robocopy+WebDeployment来自动编译和部署网站,今天,我们来看一下,如何使用MSBuild +SVN ...
随机推荐
- dp入门例题(1)
按摩师问题 https://leetcode-cn.com/problems/the-masseuse-lcci/ (找好状态转移方程) 今天只和昨天的状态相关,依然是分类讨论: 今天不接受预约:或者 ...
- TCP 服务器端
""" 建立tcp服务器 绑定本地服务器信息(ip地址,端口号) 进行监听 获取监听数据(监听到的客户端和地址) 使用监听到的客户端client_socket获取数据 输 ...
- Calibre LVS BOX 详细用法
https://www.cnblogs.com/yeungchie/ LVS BOX的使用对于后端的团队协作起到非常便利的作用. 通过在lvs rules file添加BOX的相关语句可以达到这个目的 ...
- 集合框架-HashMap&HashSet&LinkedHshMap
一.HashMap的底层实现 HashMap底层是基于数组和链表实现的.其中最重要的参数:容量和负载因子. 容量的默认大小事16,负载因子是0.75,当HashMap的size>16*0.75的 ...
- MyBatis版本升级导致OffsetDateTime入参解析异常问题复盘
背景 最近有一个数据统计服务需要升级SpringBoot的版本,由1.5.x.RELEASE直接升级到2.3.0.RELEASE,考虑到没有用到SpringBoot的内建SPI,升级过程算是顺利.但是 ...
- AsyncTask被废弃了,换Coroutine吧
本文主要是学习笔记,有版权问题还请告知删文 鸣谢:guolin@第一行代码(第三版) 你是否也在最近的代码中看见了 AsyncTask 被一条横杠划掉了 这表明--他要被Google放弃了 Googl ...
- 001_go语言中的hello world
代码演示: package main import "fmt" func main() { fmt.Println("hello world") } 代码解读: ...
- 发布新版首页“外婆新家”升级版:全新的UI,熟悉的味道
在7月30日我们我们忐忑不安地发布了新版网站首页,发布后迎接我们的不是新颜新风貌的惊喜,而是我们最担心的残酷现实——“让我们等这么多年,等来的就是这个新的丑容颜”,在大家的批评声中我们深深地认识到我们 ...
- Cross-Stage-Partial-Connections
- Java 二维数组及方法概况
数组 数组是指一组数据的集合,数组中的每个数据被称作元素.在数组中可以存放任意类型的元素,但同一个数组里存放的元素类型必须一致. 数组的定义 在Java中,可以使用以下格式来定义一个数组. 数据类型[ ...