.NET平台的ORM分析工具
众所周知,“ORM”和“性能问题”常常一起出现。ORM通过对开发人员隐藏SQL细节可以大大的提高生产力。然而,它们很容易产生一些未被发现的荒谬查询。通常情况下,数据库管理员可以通过交叉引用有问题的存储过程来查找问题代码。但是,ORM依赖于动态生成的SQL,便很难这么做了。所以,我们要寻找一些更有效的ORM分析工具。
NHibernate
NHibernate分析器(NHProf)是我们期待的入门级产品。除了有完整的统计信息外,它还显示了最近完整的SQL调用列表,并使用堆栈来反向跟踪调用它的代码。NHProf的界面简洁并有加强的交叉引用功能,它能很轻松地从针对个别查询语句的检查,切换到该代码块所使用到的全部查询语句。
NHibernate分析器最重要的部分是预警功能。一些警报会显示当前数据库错误所产生的问题,或者在多个线程中使用同一个会话等意外情况。其他警报则会显示潜在的问题,比如本该批量操作的场景被拆分成大量单独执行的写操作。还有一些警告用来提示随后可能出现的问题,比如未绑定结果集。
未绑定结果集即已执行查询但未明确使用NHibernate的SetMaxResults()抑或SQL的TOP和LIMIT语句来限定的返回记录。通常,这意味者应用程序假设该查询总是返回少量记录。在开发和测试过程中,这种做法很有效,但是,在生产环节中却是一个定时炸弹。
NHibernate分析器的另一面就是它的植入性。你不可以附加到一个正在运行的进程,必需提前配置好。虽然NHibernate分析器建议直接引用在你的程序中,log4net用户也可以通过设置app.config来激活该分析。
NHibernate Profiler是一个商业产品,起始价格是每用户300美元。
LINQ to SQL
开发人员在查找LINQ to SQL问题时,第一个便会想到去观察DataContext日志。DataContext对象有Log属性,它会将所有SQL路径输出至我们指定的TextWriter。这种做法简单且自由,但是对大量原生SQL进行处理是否适合于关键性应用仍旧是个疑问。
LINQ to SQL分析器(L2SProf)和NHibernate分析器由同一家公司出品,它们工作的方式比较类似。除了实时分析以外,我们可以配置它来写入日志文件作为后期分析。和NHProf相同,它的价格是每位用户300美元。当前它还处于Beta阶段。
Huagati查询分析器是另外一种植入式分析器。他们直白道:“这些运行时组件的设计目标,便是集成至使用Linq-to-SQL,或LLBLGen Pro来访问SQL Server的应用程序,并和他们一起部署。幸运的是,在运行的时候可以根据需要打开或关闭分析器。
Huagati的用户界面已经明显过时,占据半个显示器大小的表格显示着SQL语句和跟踪堆栈。它缺乏NHProf/ L2SProf的几乎所有优点,比如:预警和摘要显示,但它有一项面向专业开发人员的强大功能,即细节。
Huagati分析器不仅提供绝对的持续时间和行数,它深入挖掘SQL Server的所有可用信息。除了往返时间,我们还可以看到其他一些有价值的信息,比如:对一个查询进行编译及执行的时间对比。你甚至可以看到真实的执行计划及I/O状况。
Huagati查询分析器是一款商业产品,限制版的价格是50美元,完整版的价格是每位用户120美元。
ADO.NET Entity Framework
无话可说。首先,你无法像在LINQ to SQL那样获取到即便是最基本的SQL日志记录。因此,似乎没有人在为它编写分析器。
结论
还有很多.NET的ORM框架,但是它们的情况和ADO.NET Entity Framework十分类似。除了这里提到的两款分析工具外,几乎没有什么框架提供了这方面的支持——除非你使用数据库内置的分析器。
.NET平台的ORM分析工具的更多相关文章
- Windows平台下源码分析工具
最近这段时间在阅读 RTKLIB的源代码,目前是将 pntpos.c文件的部分看完了,准备写一份文档记录下这些代码的用处.处理过程.理论公式来源.注意事项,自己还没有弄明白的地方.目前的想法是把每一个 ...
- Java 性能分析工具 , 第 2 部分:Java 内置监控工具
引言 本文为 Java 性能分析工具系列文章第二篇,第一篇:操作系统工具.在本文中将介绍如何使用 Java 内置监控工具更加深入的了解 Java 应用程序和 JVM 本身.在 JDK 中有许多内置的工 ...
- Java 性能分析工具 , 第 1 部分: 操作系统工具
引言 性能分析的前提是将应用程序内部的运行状况以及应用运行环境的状况以一种可视化的方式更加直接的展现出来,如何来达到这种可视化的展示呢?我们需要配合使用操作系统中集成的程序监控工具和 Java 中内置 ...
- 系统级性能分析工具perf的介绍与使用
测试环境:Ubuntu16.04(在VMWare虚拟机使用perf top存在无法显示问题) Kernel:3.13.0-32 系统级性能优化通常包括两个阶段:性能剖析(performance pro ...
- nmon--非常棒的LINUX/AIX性能计数器监测和分析工具
转自51Testinghttp://bbs.51testing.com/viewthread.php?tid=116526 经常看到很多人讨论说loadrunner对linux/aix的性能监测太少, ...
- 11个Visual Studio代码性能分析工具
软件开发中的性能优化对程序员来说是一个非常重要的问题.一个小问题可能成为一个大的系统的瓶颈.但是对于程序员来说,通过自身去优化代码是十分困难的.幸运的是,有一些非常棒的工具可以帮助程序员进行代码分析和 ...
- Linux性能分析工具的安装和使用
转自:http://blog.chinaunix.net/uid-26488891-id-3118279.html Normal 0 7.8 磅 0 2 false false false EN-US ...
- 日志分析工具ELK配置详解
日志分析工具ELK配置详解 一.ELK介绍 1.1 elasticsearch 1.1.1 elasticsearch介绍 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分 ...
- OProfile 性能分析工具
OProfile 性能分析工具 官方网站:http://oprofile.sourceforge.net/news/ oprofile.ko模块本文主要介绍Oprofile工具,适用系统的CPU性能分 ...
随机推荐
- opencv基础到进阶(2)
本文为系列文章的第2篇,主要讲解对图像的像素的操作方法. 2.1存取像素值 为了存取矩阵元素,需要指定元素所在的行和列,程序会返回相应的元素.单通道图像返回单个数值,多通道图像,返回的则是一组向量(V ...
- CSS小技巧-煎蛋的画法~
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- HTML输入框只能输入数字或数字字母组合
JS判断只能是数字和小数点 1.文本框只能输入数字代码(小数点也不能输入) <input onkeyup="this.value=this.value.replace(/\D/g,'' ...
- Linux(Debian、Ubuntu、Deepin等)安装最新版Chrome Unstable
将下载源加入到系统的源列表 sudo wget https://repo.fdzh.org/chrome/google-chrome.list -P /etc/apt/sources.list.d/ ...
- 获取Skype用户IP地址
#!/usr/bin/env bash ESC_SEQ="\x1b[" COL_RESET=$ESC_SEQ"39;49;00m" COL_RED=$ESC_S ...
- Python 基于TK 文本编辑器
#coding=utf-8 import sys,os import tkFileDialog from Tkinter import * from tkFont import Font print ...
- for循环 重点题
1.冒泡排序 (特别重要): <script type="text/javascript"> var attr=Array(); for(var i=0; i< ...
- find的用法
find在Linux系统中和其它工具,如sed.awk.grep等结合起来用,非常有用. 1.列出系统中所有属于root用户的“set uid”文件 #find / -perm 4755 –uid 0 ...
- asp.net core中负载均衡场景下http重定向https的问题
上周欣喜地发现,微软官方终于针对 asp.net core 在使用负载均衡的情况下从 http 强制重定向至 https 的问题提供了解决方法. app.UseForwardedHeaders(new ...
- node项目的基本构建流程或者打开一个node项目的流程
1. 确立项目所需要的所有依赖.框架(比如bootstrap,vue,angular等) 2. 在项目的根目录下创建一个package.json文件,package.json文件是项目的最重要文件之 ...