Tag: 性能优化预览模式: 普通 | 列表

Sql Server性能优化一例

最近几天非常痛苦,有一个SQLServer2000的查询,总是达不到理想的状态.耗时太长.在本地的测试数据库中执行只需要2-4秒钟,而到了生产环境竟然出人意料的缓慢.竟然到了令我惊讶的4分多钟.这种类型的SQL,我是要在报表中使用的,而且在一个报表中还使用不止一次.这种状况是无法接受的.经过分析确定问题在于数量量上.本地的测试数据,数据量只有4百多万条记录.而该查询语句所涉及的记录大约11万条多一点(并非返回的记录数).而生产环境有接近4千万条记录.而且生产的服务器负载也比较高.所以相同的一条SQL语句,有着截然不同的反应效果. 在进行了采用临时表过渡中间数据,以及试着划分时间段分多次进行查询统计后,发现,有一定的改善,但是,还是无法达到我想要的程度.用户要查看一个报表,你要让他等上4、5分钟...想想吧,会是一种什么样的感受,尤其是客户在点击这个报表,你还在一旁看着.这是多么尴尬的几分钟啊.问题是怎么解决这种情况呢.劝说客户缩减报表所要数据的要求范围,目前的要求是一年.在测试的时候发现如果仅仅是当月的数据的话.还是很快就能得到结果的.如果此法行的通,固然好了.最为省事了.但是,如果这是客户必须要的一个数据,可怎么办.

    早就听说SQLServer2000对于海量数据的处理能力不强.目前客户的数据库大小为50G左右,我所要查询的表的数据量为4000万级.这样算的上海量吗?而对于海量数据的处理能力是否是体现在查询的效率上呢.我没有测试过Oracle(没有环境).我安装了一个SQLServer2005 Express 的数据库.经过测试发现在SQL的查询效率上并没有发生质的变化,虽然有了改善.SQLServer2000是110秒,SQLServer2005是85秒左右,快了25秒.但是,时间还是长.而且,你要让客户升级个数据库,来换取这个微弱的性能感觉有点不值.

     虽然可能单机的Express版本不能说明什么问题.但是,我感觉即使升级了SQLServer,可能还是到达不了一分钟以内.

查看更多...

Tags: SQL 海量数据 性能优化

分类:DB/DW | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 391