转载:http://www.51testing.com/html/index.html   
 作者:逍遥亮  
系统概要:
    1、一台 
 数据库服务器,SQLServer,没有读写分离,没有进行任何效能的处理 
 
    2、其中有一张Table,每天客户端大概写入30W笔数据 
 
    3、报表查询导出功能,Table中大约 3000W笔资料,查询一周时间,大概150~200W笔数据,并生成Excel文件 
 
    4、数据库操作使用的是ADO.NET 
 
     
 Bug: 
 
    在点击【查询导出】的按钮后,时常会抛出SQLServer的Error 信息,报表导出 NG 
 
     
 解决过程: 
 
    1、Table 的查询效能问题,建立index,结果 问题依旧 
 
    2、因为没有进行读写分离,怀疑是否是死锁,观察数据库,不是因为死锁的问题造成的 
 
    3、建议客户在服务器上新增硬盘,增加一块硬盘,单独供数据库使用,OK后,但问题依然发生 
 
    4、建议客户增加服务器,使用独立的数据库服务器,读写分离,被客户Pass 
 
    5、只能牺牲 
 SQL查询的效能了,comm.CommandTimeout = 0; 在 ADO.NET Command时不设置timeout 限制 
 
    至此,问题解决,只是查询导出报表的时间可能会变长一点,在不增加客户的硬件成本的情况下,客户接受,那 OK. 
 
      
 
 
