SQLServer性能调优报表数据库与业务数据库分离.docx

SQLServer性能调优报表数据库与业务数据库分离.docx

ID:53261939

大小:79.41 KB

页数:7页

时间:2020-04-02

SQLServer性能调优报表数据库与业务数据库分离.docx_第1页
SQLServer性能调优报表数据库与业务数据库分离.docx_第2页
SQLServer性能调优报表数据库与业务数据库分离.docx_第3页
SQLServer性能调优报表数据库与业务数据库分离.docx_第4页
SQLServer性能调优报表数据库与业务数据库分离.docx_第5页
资源描述:

《SQLServer性能调优报表数据库与业务数据库分离.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、SQLServer性能调优——报表数据库与业务数据库分离2011-3-30来源:网络项目起源在日常的开发过程中,功能总是先于性能被考虑。只有当用户抱怨系统性能时,我们才开始头痛医头,脚痛医脚地来解决这些性能问题。公司的CRM和ERP系统叫作Olite,完全是我们组开发的。从无到有,功能不断扩展,原先只有CRM模块,后来加入了ERP模块,Accounting功能和Report功能。近来出现的情况是当某些用户跑一个大Report时,正在进行业务操作的用户感觉系统响应非常慢。通过对系统的性能监视发现,在这

2、些时刻,数据库中产生了大量的锁,同时服务器上出现了CPU和内存资源消耗的尖峰。系统结构性能问题源于系统的整体结构和发展过程。Olite系统的Application是基于.NET平台的WebForm程序,数据库为SQLServer2005。其主体结构如下图所示:其Application端包括两个网站:OliteBase和OliteReport,但连接的都是同一个数据库。Olite的Application端其实很薄,而把大量的业务逻辑包装在存储过程中,放在数据库端来运行。这种结构在起初性能很好,而且提供

3、给用户的Report是实时的业务数据。但随着提供的业务模块,特别是Report的增多(Report对应的存储过程连接的表多,计算量大,输出的结果集大),数据库就成为了瓶颈。首先,我们做了存储过程的优化,通过创建Trace捕获性能差的存储过程,并对其进行优化。我们这么做了一段时间,但获得的收效并不大。我们在优化以往存储过程的同时,随着系统新功能的上线,又有新的存储过程进入需要优化的列表中。其次,修改数据库设计,其中包括修改表结构和优化索引。在系统局部重构表结构与关系对于性能的提升还是比较明显的,但这样

4、的修改会造成Application端的大量修改,工作量大,风险大,所以不能大规模实施。对于索引优化又存在矛盾,业务模块(OliteBase)要求数据库中的索引不要太多,以支持高效的插入、修改和删除,而报表模块(OliteReport)则希望在数据库中有更多的索引,以支持高效读。最后,我们还试图提供晚一天的Report服务,来分流主数据库的压力。每天通过把前一天的备份数据库恢复在另一台服务器上,并在此服务器上提供OliteReport2站点,给用户提供Report服务。但用户并不喜欢使用OliteRe

5、port2,原因分析下来有3个方面:其一,有时用户确实需要实时的Report。其二,OliteReport能存储用户的Report条件,而OliteReport2由于每天都会被刷新,无法保留这些条件。其三,用户更习惯打开原来的Report链接。项目需求上述的各种优化方案都没有根本性的解决系统的性能问题。在这种的背景下我们有了把报表数据库与业务数据库分离的想法。此项目的需求:·1.提高用户对整个系统性能的感受,Report模块不要影响到业务模块的运行。·2.用户可以和原先一样使用Report模块,即不

6、增加新的Report站点。·3.用户可以和原先一样存储填写的Report条件,以供重复使用。·4.尽可能提供最小延时的Report。需求1是这个项目的主要目标,需求2、3、4是尽可能保证项目所带来的改变对用户是透明的。方案选择对于原来的系统结构,其Application端已经是两个独立的站点OliteBase和OliteReport。所以只要把OliteBase和OliteReport的数据库进行分离,在分离后的两数据库间进行数据的同步就行了。这里的关键在于如何进行数据库间的同步。微软提供了很多种数

7、据同步的选择:1.集群;2.LogShipping;3.Replication;4.Mirror;5.IntegrationService。微软提供的这些方案中大部分都是用于做数据库的高可用性的,而我们的项目是以高性能为目标的。为了满足我们自己的需求,应选择那种方案,并做哪些修改呢?1.集群这是第一个被我们否决的方案。配置SQLServer数据库集群,对硬件有较多限制,而且配置相对其他方案复杂。我们的项目总共的服务器资源就两台,除原先主数据库服务器外,另一台是虚拟机。2.LogShippingLog

8、Shipping把主数据库的日志传送到从数据库,并在从数据库上进行回放来保证主、从数据库间数据的一致,从数据库为只读。LogShipping而且还有配置简单的特点,开始时是我们的一个候选方案,但在进一步的实验过程中发现了两个问题。第一、LogShipping可设置的时间间隔最小单位为分钟。第二、当从数据库进行日志回放时,连接此数据库的连接需要被断开。其中第二个问题是难以容忍的,这个方案也被淘汰了。3.ReplicationReplication的原理和LogShipp

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。