热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用LINQtoSQL将ASP.NETWeb窗体应用程序迁移到SQLServer2016后的性能问题

我一直在使用ASP.NETWeb窗体,VB.NET以及使用LINQ-to-SQL进行数据访问的旧版Web应用程序

我一直在使用ASP.NET Web窗体,VB.NET以及使用LINQ-to-SQL进行数据访问的旧版Web应用程序进行一些维护。

我们最近将应用程序从SQL Server 2005迁移到了SQL Server2016。此后,以前需要花费几秒钟才能生成的报告现在要花费几分钟。

报表生成的设计有些次优。为了生成单个摘要报告,我们运行了大约100个查询,然后将结果拼写到最终报告的代码中。我本来希望有一个查询可以完成数据库中所有工作的设计。

在测试时,我们让数据库管理员运行了概要分析工具。在他提供的跟踪表中,我看到了大约200个与报告生成相关的条目。使用 sp_executesql (由LINQ-to-SQL生成)的一百多个数据访问查询,每个查询最多仅花费几毫秒。 sp_reset_connection 的调用次数几乎相同,但是数据库管理员断言这没有什么意外的。而且他从自己的跟踪表检查中看不到任何危险信号。

不幸的是,在我们进行测试时,网络服务器的管理员没有可运行的性能分析工具,而且我无法在本地计算机上运行该应用程序来进行自己的性能分析。

有关我们配置的更多详细信息:


  • Windows Server 2016

  • IIS 10

  • .NET Framework 4.6.2

  • SQL Server 2016(13.0.5366.0)

关于如何解决此问题的任何建议?


由于架构错误或加载数据的方法而导致向数据库服务器发送过多请求。
当您使用“延迟加载”(Linq 2 SQL中的默认方法)方法加载数据并尝试在“ foreach”块“发生太多请求”中加载相关数据时。

加载问题的解决方案:急切加载

DataLoadOptions Load = new DataLoadOptions();
Load.LoadWith (d => d.Employees);

有关如何加载数据的详细日志:

dbContext.Log = Response.Output; //

此外,当SQL连接返回到连接池时,会出现“ sp_reset_connection”,这应该不成问题。

了解更多信息:
https://www.c-sharpcorner.com/article/lazy-loading-and-eager-loading-in-linq-to-sql/


推荐阅读
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 在使用 DataGridView 时,如果在当前单元格中输入内容但光标未移开,点击保存按钮后,输入的内容可能无法保存。只有当光标离开单元格后,才能成功保存数据。本文将探讨如何通过调用 DataGridView 的内置方法解决此问题。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • [论文笔记] Crowdsourcing Translation: Professional Quality from Non-Professionals (ACL, 2011)
    Time:4hoursTimespan:Apr15–May3,2012OmarZaidan,ChrisCallison-Burch:CrowdsourcingTra ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 深入理解Tornado模板系统
    本文详细介绍了Tornado框架中模板系统的使用方法。Tornado自带的轻量级、高效且灵活的模板语言位于tornado.template模块,支持嵌入Python代码片段,帮助开发者快速构建动态网页。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • 本章将深入探讨移动 UI 设计的核心原则,帮助开发者构建简洁、高效且用户友好的界面。通过学习设计规则和用户体验优化技巧,您将能够创建出既美观又实用的移动应用。 ... [详细]
  • 如何高效创建和使用字体图标
    在Web和移动开发中,为什么选择字体图标?主要原因是其卓越的性能,可以显著减少HTTP请求并优化页面加载速度。本文详细介绍了从设计到应用的字体图标制作流程,并提供了专业建议。 ... [详细]
  • 本文介绍如何使用 NSTimer 实现倒计时功能,详细讲解了初始化方法、参数配置以及具体实现步骤。通过示例代码展示如何创建和管理定时器,确保在指定时间间隔内执行特定任务。 ... [详细]
  • 本文介绍了如何通过 Maven 依赖引入 SQLiteJDBC 和 HikariCP 包,从而在 Java 应用中高效地连接和操作 SQLite 数据库。文章提供了详细的代码示例,并解释了每个步骤的实现细节。 ... [详细]
  • 本文介绍如何使用阿里云的fastjson库解析包含时间戳、IP地址和参数等信息的JSON格式文本,并进行数据处理和保存。 ... [详细]
  • 本文讨论了如何根据特定条件动态显示或隐藏文件上传控件中的默认文本(如“未选择文件”)。通过结合CSS和JavaScript,可以实现更灵活的用户界面。 ... [详细]
author-avatar
玉米猴子_794
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有