• 浅谈服务器的压力解决方案


    一般情况下,我们是从数据层级别(MSSQL2000为例) 经过逻辑层级别(IIS)的处理后发送到客户端去.

    那么,解决的方案就有三种级别:

    1. 优化数据库
    2. 优化代码
    3. 使用静态


    一.数据库优化:
       1) 合理的设计索引,正确的使用索引;
       2) 对于不重要的数据,采有with(nolock) 锁 能提高读取的效率,重要的就采用事务吧;
       3) 根据执行计划来查找耗时关键点,总执行成本高于0.01的话就比较危险了,如果是千万级的数据最好要重新设计索引或表结构;
       4) 尽量使用SP,而不是让Sql裸奔.
       5) 如果一个表实在是太大(超级千万)并且在未来很短的时间内有增加的趋势,那么就最好要采用分表

    二 代码的优化:
       1) 一次性读取用户数据,避免每调一次就读一次数据库的情况(这算不上优化,应该就是错误的写法,我有朋友是真的碰到过的).
     如:我们可以选取用户信息保存至UserModel里(UserInfo info = DAL.GetUserInfo(1)),然后通过调info.UserId,info.UserName等查询用户的信息,而不是userId = DAL.GetUserId,userName = DAL.GetUserName
       2) 合理正确的使用缓存.
     通过缓存类来保存一些全局的设定等,或是通过页面级缓存或是控件级的缓存减少服务器的压力(这个在Asp.Net是比较容易实现的).这里面就有个度的问题了.还要看你的服务器内存.如果是单服务器单站,嘿~~~
       3) 及时关闭非托管资源(比如文件的打开,数据库连接的打开,等)

    三 生成静态文件:
       1) 如果是经常用,更且不需要及时更新的数据内容,如榜单,友情链接,新闻等 ,可按一定的时间来重复生成静态的Js或是纯文本或是Html(其实都是文本内容)


        这三种方式各有优缺点,各有特色.
        数据库(比做赛车)优化是根本,数据库没有设计好,下面的都是假的,再好的代码也跑不起来!
        好代码就像是优秀的赛车手,好的赛车手+好的赛车跑起来,那叫杠杠的
        静态生成一般来说不是必要不要用.因为不是很灵活.但,它往往也是解决压力的关键.使数据库服务器和代码更好更快更高效的运行


        本人浅论,不足之处,欢迎指正.

    [一线风 最后修改于:2008-3-25 17:12:22]
  • 相关阅读:
    netty源码学习
    大话数据结构读书笔记
    java编程思想读书笔记
    spring依赖注入源码分析和mongodb自带连接本地mongodb服务逻辑分析
    spring的xml的property和constructor-arg的解析
    junit测试用例加载spring配置文件
    (大二下)软件需求分析阅读笔记01
    课后作业——需求分析
    2018年春季个人阅读计划
    软件需求与分析——大二下需会知识点
  • 原文地址:https://www.cnblogs.com/atwind/p/1121579.html
Copyright © 2020-2023  润新知