网站服务器端的软件优化方案

对于大牛来说,也许这篇文章不算什么,不过对于刚入行两三年的人,也许作用还是有的。当网站数据量达到一定程度时,就会很自然的出现速度变慢的现象,这里说几种我常用的优化方案。


1、数据库索引

  这貌似是最常用的优化方案了,在经常使用OrderBy、WHERE、JOIN的字段上面加入索引会使速度飞起来。不过数据库索引会占据内存,并对增删改操作造成一定的影响(实际上非常小),所以索引一般都只在非常必要的字段上添加。需要注意的是,索引的原理是排序算法,所以如果一个字段的值项很少,只有那么三五个的话,索引能起到的优化作用不明显,所以建议在值项至少要在10个以上时使用。

  数据库索引分为两类,一类是聚集索引(按物理位置编制),一类是非聚集索引(按逻辑位置编制),很明显把索引字段的数据都放在同一物理位置上速度会更快,不幸的是一张表中只能有一个聚集索引,而且一般被主键占据。


2、SQL语句编写

  SQL语句的编写应遵循以下规则:

  A、提供给用户访问的SQL功能,SELECT 语句的表名后面必须加入“WITH(NOLOCK)”,这样即使数据库在进行大批量操作,也不影响用户的数据提取(我建议所有SELECT语句都照此操作,因为即使有脏数据也不过那几秒钟,除非是对时间精度要求非常高的程序,否则影响不大)

  B、WHERE、ORDER BY、JOIN子句中尽量不要出现对于字段的运算,如“WHERE MAX(A)=1”,索引的作用就是排序,一旦出现运算就无法使用索引,你加了也白加。

  C、如果需要在数据量较大的表上面建立统计功能,可以考虑建立日统计表,定时将需要统计的数据存入统计表中(建议凌晨执行,以免影响用户白天的体验)。统计是一项非常耗性能的功能,尽量不要在数据源表上面直接使用。


3、网站缓存

  ASP.NET提供了自带的Cache功能,可以考虑将一些经常使用,但又不经常变更的数据放入Cache。其实也不一定非要使用自带的Cache,有时候把数据存入.txt、.xml文件中也是个不错的选择。


4、静态页面设计

  网站有一些访问量非常大的页面,而且每个人的访问结果在固定时间内(如1天)都是一样的,这种页面就可以考虑做成静态页。在后台提供生成静态页的功能,生成成功以后自动替换现有的静态页,就可以实现更新的即时性。其实很多网站的前台都可以这样搞,根本不用访问数据库。


5、队列设计

  在访问量非常大,且涉及到增删改数据库的,可以考虑设计队列。主要参考网站为12306,下单后直接告诉你提交成功,然后他的服务器按提交顺序依次处理,你只要等待就行了。在实现中,就是设计一张请求记录表,将所有请求过来的数据放进来,告诉用户已经提交成功,请等待处理。然后后台有一个不断处理数据的程序来处理这些请求,处理完以后告知用户可以付款什么的。


  主要的思路就是尽量减少数据库访问,能让网站解决的问题就让网站解决,数据库资源实在太富贵。用以上这几个方案,服务器的性能基本上就能发挥到极致了。如果说这些都解决不了问题,那很有可能是需要升级硬件配置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冬瓜就是我

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值