asp.net程序优化 尽量减少数据库连接操作
在这个项目中,我负责开发一个服务端程序,它主要功能是为第三方程序提供数据更新服务。这个服务端程序以站点形式部署,并采用Xml格式输出数据。
这个项目从设计到编码都是由我亲自完成,并经过了整合测试。在初始化数据时,我们遇到了问题。客户端接收数据速度极慢,尤其是在测试环境中。数据库服务器部署在国外,而网站则部署在公司内部。我原本认为在数据库数据处理方面已经做了足够的优化,包括合理使用索引和主键。问题的关键恰恰出在数据库连接查询方面。频繁查询导致数据初始化速度缓慢,严重影响了程序的性能。
为了解决这个问题,我首先尝试了一些常规方法,比如即用即查,需要数据时就从数据库查询。这种做法导致了大量的单表查询返回单个字段的情况。例如,对于大约3000条数据集合,我需要循环取出每一条数据,然后再从其他数据表中查询得到需要的字段。这样会导致大量的数据库连接和关闭操作,当网络速度不理想时,程序速度就无法忍受了。
我意识到必须尽量减少数据库连接操作。类似于前端开发中的优化原则,尽量减少Http请求次数一样。我采取了另一种解决方案:将所需的数据从多个数据表中统一获取并存储在一个List对象中,也就是将数据存储在内存中。然后,通过LINQ查询其中的每条数据。这样处理之后,速度得到了显著提升。
这种做法似乎打破了我之前遵循的一个原则:多表查询最好不要使用超过3个表的inner join操作。但面对现实情况,为了提高速度并解决功能实现的问题,我不得不接受这种打破原则的做法。虽然这次使用了多次一个sql语句就inner join 3个表以上的情况,但相比之前极慢的速度,这种改变是可以接受的。最终,我们成功地解决了项目中的性能问题,为第三方程序提供了高效、稳定的数据更新服务。
编程语言
- asp.net程序优化 尽量减少数据库连接操作
- 用JS编写一个函数,返回数组中重复出现过的元素
- 微信公众号支付之坑:调用支付jsapi缺少参数 t
- asp.net利用母版制作页脚效果
- JavaScript实现时间表动态效果
- Angularjs为ng-click事件传递参数
- PHP实现一维数组转二维数组的方法
- 将ASP记录集输出成n列的表格形式显示的方法
- PHP解压tar.gz格式文件的方法
- destoon实现VIP排名一直在前面排序的方法
- js中遍历Map对象的方法
- vue实现重置表单信息为空的方法
- sql多条件多字段排序(图文教程)
- JS实现区分中英文并统计字符个数的方法示例
- 解决angularJS中input标签的ng-change事件无效问题
- JS正则匹配URL网址的方法(可匹配www,http开头的一切