• 如何检测mvc性能和sql语句


    mvc中使用linq如何检测sql语句

    .net中使用mvc开发已经是一种趋势,不仅仅是.net ,java 等越来越多的开发者更倾向于mvc这种开发模式,在.net mvc 使用linq非常方便,各种方法扩展也是很方便的,看不到sql语句这个使用就要使用 MiniProfiler 来检测sql语句的和提升sql语句的性能。MiniProfile

    MVC MiniProfiler是Stack Overflow团队设计的一款对ASP.NET MVC的性能分析的小程序。可以对一个页面本身,及该页面通过直接引用、Ajax、Iframe形式访问的其它页面进行监控,监控内容包括数据库内容,并可以显示数据库访问的SQL(支持EF、EF CodeFirst等 )。并且以很友好的方式展现在页面上。

    该Profiler的一个特别有用的功能是它与数据库框架的集成。除了.NET原生的 DbConnection类,profiler还内置了对实体框架(Entity Framework)以及LINQ to SQL的支持。任何执行的Step都会包括当时查询的次数和所花费的时间。为了检测常见的错误,如N+1反模式,profiler将检测仅有参数值存在差 异的多个查询。

    第一步:通过Nuget下载MiniProfile

    把这个三个dll文件下载下来

    可能有的同学不懂这个nuget ,我第一次下这个miniprofile,照着博客上写,报了版本错误。如果不用nuget ,那你就引用我自己上传的这三个dll文件。MiniProfiler下载链接

    第二步:添加MiniProfiler相关检测的代码到Global.asax

    using System.Web.Mvc;
    using System.Web.Optimization;
    using System.Web.Routing;
    using StackExchange.Profiling;
    using StackExchange.Profiling.EntityFramework6;
    namespace First_MinProfile
    {
        public class MvcApplication : System.Web.HttpApplication
        {
            protected void Application_Start()
            {
                AreaRegistration.RegisterAllAreas();
                FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
                RouteConfig.RegisterRoutes(RouteTable.Routes);
                BundleConfig.RegisterBundles(BundleTable.Bundles);
                MiniProfilerEF6.Initialize();
            }
            protected void Application_BeginRequest()
            {
                MiniProfiler.Start();
            }
            protected void Application_EndRequest()
            {
                MiniProfiler.Stop();
            }
        }
    }
    

    a,b,c,d,e,f.......等26个字母认识的话,这个三个事件大概的意思能懂应该难度不是很大。

    第三步:相关显示和配置文件的修改

    1.在ViewsShared\_Layout.cshtml文件的body前面加上一段代码,让监控展示在页面上。@StackExchange.Profiling.MiniProfiler.RenderIncludes()


    2.Web.config加入一个handlers 处理,webServer这个节点下面添加一个handlers节点

        <system.webServer>
        <handlers>
        <add name="MiniProfiler" path="mini-profiler-resources/*" verb="*" type="System.Web.Routing.UrlRoutingModule" resourceType="Unspecified" preCondition="integratedMode" />
        </handlers>
        </system.webServer>
    

    第四步:查看结果简单分析

    单击 more columns 我们可以看到

    我们简单地分析一下从发送这条../Home/Index请求到页面上显示出来花了185毫秒,sql访问数据库花24%,卖个关子,那么问题来了,整个sql语句的查询到底花了多少时间,如果你知道也可以留言哦!这样可以细微监控方法内部的时间,方便、快速地帮我们找出我们的程序的瓶颈所在。

  • 相关阅读:
    Vue源码解析
    开发调试的几个小技巧
    C#课后小作业
    C#随堂
    C#是数据类型
    插眼
    SQL基本的45题
    SQL创建数据库、建表、填入内容
    T-SQL语句基础
    SQL基本数据类型等
  • 原文地址:https://www.cnblogs.com/zhangmumu/p/7374828.html
Copyright © 2020-2023  润新知