去年11月份完成了公司的一个服务平台,是web程序,在公司的一个.NET框架上开发的。
4月份的时候出现了访问数度慢,以及有时不能访问的情况,经检测,发现数据库服务器cpu占用较多。目前访问数据如下:日均IP: 2500
日均PV:40000
每日发帖(问题+回复):3000左右

为了解决这个问题,采取了一些优化措施
1、对一些经常查询或排序的字段增加了索引。
2、增加了冗余表,把一些统计数据保存在冗余表中。
3、对一些查询常用的存储过程,为了避免和写入时竞争数据发生死锁,降低了事务隔离级别,允许度脏数据。
4、对一些常用页面做了缓存。
目前情况:能访问的时候一般速度很快,但是偶尔还是会出现数据库CPU暂用较多导致访问阻塞的情况。         上面是我做的一些优化措施,希望和大家一起谈一谈数据库优化可以做的事情,共同提高。

解决方案 »

  1.   

    happyflystone :
        访问一个问题列表页面的时候发生了阻塞,远程连接到服务器查看的时候都会发现,数据库服务器的CPU在90%以上,应该是访问数据库的时候发生了阻塞。
      

  2.   

    貌似你的业务上是否复杂一些,有没有优化的空间,
    或者是查询的SQL是否有优化的空间.
      

  3.   

    网络有掉包或者是DNS解析不到的情况么?
    网络是否稳定?
    还是SQL Server的Patch没有安装?
      

  4.   

    是因为w3wp.exe这个进程的问题这个是.net程序自身的问题 和 数据库关系不大必须通过静态化的方法才能解决。cache数据库 或者 直接页面静态化
      

  5.   

    然后就是跟踪你这个页面加载时候执行的所有SQL语句
    看哪个语句执行时间比较长,占用资源比较多的,有针对性的优化还有就是
    能有办法缓存的就缓存掉,减轻数据库压力
    能有办法从程序上下文得到的尽量从程序上下文取,甚至传参,减少访问数据库次数
      

  6.   

    刚上传的blog
    SQL SERVER性能优化综述 希望对楼主有所启发
      

  7.   

    个人感觉你的数据级别不足以形成瓶颈,应该是SQL有优化提高的空间,先查找阻塞的原因吧
    另外网络不可用有时是因为超时
      

  8.   


    过高CPU使用率一般是死循环造成,
    如果代码逻辑没有明显漏洞的话,
    看看数据的并发控制是不是没做好?