首页logo
  •  

jonllen

金龙,目前就职于一家软件公司,从事Java和.Net信息安全开发设计。

个人档案

jonllen
心情闪存 | 给他留言
妮称:jonllen
来自:中国. 湖南. 湘潭
简述:金龙,目前就职于一家软件公司,从事Java和.Net信息安全开发设计。
博客日历

网站开发常用优化

分类:Asp.Net

网站优化有很多种,养成良好的编码习惯,平时注意知识点和经验的积累,是提升个人技术乃至网站技术含量的重要途径之一。

1.代码规范

应尽量保持前后台代码整齐,包括使用Tab键使html和cs代码看上去层次结构清晰,这样可使后续网站更容易维护。在页面输出的内容一定要注意过滤html或进行编码,防止一些非法输入和攻击脚本。

2.编程思想

目前来说面向对象的编程思想应该算是比较公认的了,也是最基础的。比如我们在查询时返回的数据类型尽量是实体封装了的对象,而不是DataSet数据集,即使微软为DataSet提供了肥沃的土壤。使用实体能更好的阐述对象间的关系,便于以后进行扩展。而即便是需要使用反射将DataSet转换成实体对象类型,我想网站也不会差这一点性能。

3.层次结构

无论你的项目是使用几层结构,有无使用三层架构,但至少必须保证页面后置代码不会出现SQL语句,这也是最基本的。一般我们对数据库的访问都会对进行封装,每个对象都有对应的DAO类。但如果SQL语句到处是,有一天数据库改了一个表的列名,那就折腾了。也就是说,网站需要有一个条理清晰的层次结构。

4.框架技术

成熟的框架一般使我们的开发更为快捷,同时也可提高网站的质量和安全性。比如ORM框架,底层一般使用参数化的查询方式,这样就可避免了我们自己拼接SQL时带来注入的风险。并且一般ORM都会考虑跨数据库的情况,因此也使得网站数据库的移植性更高,在某些场合还是很有用的。

5.SQL优化

SQL查询时间一般占用了网站应用程序处理的大部分时间,SQL性能优化是提高网站访问速度的重要途径,尤其是在网站访问量大数据多的情况,SQL优化显得尤为重要。下面说几点我平时SQL性能优化的方法:

1)表结构优化

首先,数据库的结构设计要合理,同时可针对一些常见查询需要,增加必要的冗余字段,如栏目表增加文章数等,同步的方法可在更新时同步一次或利用数据库定时作业来完成。冗余结构的好处是在查询时可减少每次统计归档的开销,更快捷的查询出结果。

2)减少返回列

对于查询尽量少返回列,没有必要的列不返回,因为每多返回一列,服务器读取逻辑磁盘的次数Reads可能会增加,从而导致Duration执行时间增加。

3)关联表优化

对于一些中间表或包含外键字段的表,应尽量减少关联表次数。如果实在没有办法,可以把一个查询分成几个步骤来查询,比如查询文章中间表可先只查询出文章ID,再根据文章ID查询出文章的具体信息。因为我们查询时一般都会分页,而如果数据量很大时关联查询当然就很慢,而如果我们只根据已分页的返回的那么几十条ID记录再去关联查询,那速度就很快了。如果我们有使用ORM框架,可考虑使用延迟加载。

4)排序字段调整

一般我们查询会根据时间来排序,而如果我们表的主键是自增或是有规律的,建议采用主键唯一字段排序代替时间字段排序,因为主键字段一般创建了聚集索引,而如果使用其他字段会增加排序的成本。

5)分页查询优化

我平时使用SQL2005自带的分页函数ROW_NUMBER较多,使用ROW_NUMBER() OVER(ORDER BY fdArtiCreateAt DESC) AS index_产生一个自增序号来进行分页。但发现一个问题,查询第一页时速度很快,但页数越后查询越慢,到最后一页和第一页速度相差了几十倍。目前这个问题我还没有找到很好的解决办法,不知道其他数据库是否也存在这样的问题?感觉和排序字段的升序ASC和降序DESC有关,我试过把最后一页的排序颠倒过来,然后查询第一页的数据,如果排序字段唯一的话结果就是按正常排序的最后一页,但速度会快很多,这个需要在分页时对页码进行判断,比较麻烦。

6)服务器调优

软硬件的配置可以把服务器调节到最优的状态,相反没有配置好设置可能会对服务器性能造成影响。如服务器属性的内存里最大服务器内存(MB)和每次查询占用的最小内存(KB)等,如果这些参数没有配置好,就可能会制约影响服务器正常工作。

6.发布网站

发布网站时我们需要把程序调成Release模式,Debug版中会输出一些调试信息,而Release版则会优化编译,使程序在运行上是最优的,可以发现Release版生成的dll文件比Debug版的大小都小一些。

标签:Asp.Net SQL优化
  • posted@ 2010-12-26 12:22
  • update@ 2010-12-26 19:27:06
  • 阅读(8319)
  • 评论(0)

相关文章

评论
暂无任何评论。
发表评论
*必填
回复通知我
*必填

博文推荐