热门标签 | 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/


推荐阅读
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 使用C#开发SQL Server存储过程的指南
    本文介绍如何利用C#在SQL Server中创建存储过程,涵盖背景、步骤和应用场景,旨在帮助开发者更好地理解和应用这一技术。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • 本文介绍了如何通过 Maven 依赖引入 SQLiteJDBC 和 HikariCP 包,从而在 Java 应用中高效地连接和操作 SQLite 数据库。文章提供了详细的代码示例,并解释了每个步骤的实现细节。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 构建基于BERT的中文NL2SQL模型:一个简明的基准
    本文探讨了将自然语言转换为SQL语句(NL2SQL)的任务,这是人工智能领域中一项非常实用的研究方向。文章介绍了笔者在公司举办的首届中文NL2SQL挑战赛中的实践,该比赛提供了金融和通用领域的表格数据,并标注了对应的自然语言与SQL语句对,旨在训练准确的NL2SQL模型。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 精选30本C# ASP.NET SQL中文PDF电子书合集
    欢迎订阅我们的技术博客,获取更多关于C#、ASP.NET和SQL的最新资讯和资源。 ... [详细]
  • 本文由瀚高PG实验室撰写,详细介绍了如何在PostgreSQL中创建、管理和删除模式。文章涵盖了创建模式的基本命令、public模式的特性、权限设置以及通过角色对象简化操作的方法。 ... [详细]
  • ASP.NET MVC中Area机制的实现与优化
    本文探讨了在ASP.NET MVC框架中,如何通过Area机制有效地组织和管理大规模应用程序的不同功能模块。通过合理的文件夹结构和命名规则,开发人员可以更高效地管理和扩展项目。 ... [详细]
  • 本文探讨了领域驱动设计(DDD)的核心概念、应用场景及其实现方式,详细介绍了其在企业级软件开发中的优势和挑战。通过对比事务脚本与领域模型,展示了DDD如何提升系统的可维护性和扩展性。 ... [详细]
  • 本文探讨了 Spring Boot 应用程序在不同配置下支持的最大并发连接数,重点分析了内置服务器(如 Tomcat、Jetty 和 Undertow)的默认设置及其对性能的影响。 ... [详细]
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社区 版权所有