文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>【转载】ASP.Net程序开发性能优化---数据库优化

【转载】ASP.Net程序开发性能优化---数据库优化

时间:2011-05-27  来源:Bruse

相信园子里有不少程序员同学都是在做着xx管理系统这样的中小型项目,这种项目往往是一种工作量的代码,程序员同学就将青年耗费在这样的项目中,不断改变需求,不断地加班赶工,于是就开始怀疑这个行业,对developer充满厌恶,想学新东西,可是周围同事的水平都是差不多;想买书学平时加班根本没有自己的时间。这种状况相信大多数情况都在我们身边发生,我之前就是处于这种状态,使用的是asp.net语言,不过很难界定所做的项目是网站还是软件,因为它很复杂,开发周期和传统软件开发没有什么区别,但它确实是部署在IIS上可以通过浏览器访问。或者又是专门给企业做网站的程序员,一套程序内核不变,只是每个网站换个壳,新闻系统、留言系统、下载系统等等。……为什么我要说这些呢?因为在前面我要说的是,这些并不是真正的互联网公司,这种公司往往追求利益最大化、最快化、最直接化,签单给钱,整个流程程序员的作用几乎可以忽略不计,因为随便招几个毕业生带几一两个月就可以继续把项目做下去。

而在互联网公司里,尤其是中大型网站,性能绝对是跃居非常重要的位置,试想一下日IP过百万上千万,并发成千上万的网站,如果首页每节省1k的流量,那么一天下来就为企业节省相当可观的支出;页面加载每减少1秒的时间,就会减少可观的用户流失。我之前是在上段说讲到的小公司做项目,现在在一家算是中型互联网公司里,日PV几十万的网站,前端、代码、数据库设计的影响对网站的影响是如此之重大,是我之前从没有亲身体会到的。在这近一年的时间里,总结了一些关于asp.net性能优化的一些经验与大家分享,由于个人水平的限制,难免有一些不准确、不完善的地方,欢迎大家拍砖o(∩_∩)o 

这一系列文章我计划花三个大的方向来讲解一些性能方面的东西,包括数据库性能优化、asp.net程序优化和前端优化,这里我将数据库性能优化放在前面,代表了它的重要性。我个人认为影响一个网站性能从程序上来说最主要就是这三个方面,从这三个方面逐一进行优化,将对网站性能的提升会有较大的帮助。

数据库性能优化

一、字段的建立

1、减少跨表查询

需求确定后往往就开始建立数据库,那么建立数据库,对数据库的操作离不开增删改查这些最基本的操作,其中查询应该是频繁的操作,提升查询操作的一个基本的原则是尽量减少跨表查询,也就是JOIN、UNION和子查询等,这种情况往往最为常见,往往是A表中其中一个字段是B表的外键,查询时往往需要同时将A表中的数据全部查询出来,同时再把匹配A表外键的字段查询出来,这样就会大大增加查询的成本。这里我们以文章系统为例,一般表结构如下:

?
SELECT TOP 1 * FROM News WHERE NewsId=@NewsId

假设有一百万条数据,实际中NewsId=1,那么我们就节约了查询999999条数据的时间。

一般情况下News表会很大,而NewsCate会很少,对于这种对比非常悬殊的两表,如果进行连接查询,将数据小的NewsCate放到JOIN后面,这样可以提升查询性能。

关于查询优化,相关的资料非常丰富,大家可以自己去搜索一下,对于争执比较多的类似IN和EXISTS等问题,可以在实际数据库中测试其性能,然后决定选用哪一种。

四、SQL Profiler的使用

SQL Profiler是最容易被忽视的工具,而这个工具是数据库性能优化一个非常强大的工具,它与Management Studio在SQL Server安装时都会绑定在一起,选择新建跟踪,然后在跟踪属性中选择相应的事件列,一般选择CPU、Reads、Writes、Duration、StartTime、EndTime即可,它们对应了在物理上SQL语句对CPU的占用、对硬盘读写的次数和起止时间,通过它可以很直观地看出影响SQL性能的地方。

比如我这里测试是对一百万条数据SELECT *和SELECT NewsId的性能测试,可以较直观地看出SELECT * 在CPU损耗、和硬盘读取上会大很多。因此在实际项目中建议“吃多少,拿多少”。

以上就是关于在数据库性能优化的部分,期待大家有更好的讨论一起来分享,下一篇文章会讲解ASP.NET代码的优化。

相关阅读 更多 +
排行榜 更多 +
找茬脑洞的世界安卓版

找茬脑洞的世界安卓版

休闲益智 下载
滑板英雄跑酷2手游

滑板英雄跑酷2手游

休闲益智 下载
披萨对对看下载

披萨对对看下载

休闲益智 下载