文档介绍:系统优化方案一、系统级别优化 ,多数据库架构架构图系统同时使用多个数据库, 以分散单个数据库的压力, 可以采用多台数据库服务器, 或者多实例,或单实例多数据库,下面是架构图: 应用程序数据库 A11 数据库实例 A1 数据库实例 A2 数据库 A21 (主库) 数据库 A22 (从库) 数据库实例 B 数据库 B 应用服务器数据库服务器 A 数据库服务器 B 双实例,或者双数据库理论上,如果有两台以上的数据库服务器是最好的,但是我们能够使用的只有一台,所以可以考虑“双数据库实例”或者“单实例双数据库”。在一台数据库上安装两个数据库实例很简单,只需要安装的时候添加一个新实例即可, 注意为实例设置一个合适的名称,默认实例没有名称的,如下图的两个实例。在“单实例双数据库”中, 可以采取“主从库”的模式。主从库是两台服务器上的两个数据库,主库以最快的速度做增删改操作+ 最新数据的查询操作;从库负责查询较旧数据, 做一些对实效性要求较小的分析, 报表生成的工作。这样做将数据库的压力分担到两台服务器上从而保证整个系统响应的及时性。性能测试说明使用 WFT 的数据库的 FundYield 表, 做了下不同个数数据库访问效率的测试,采用如下的 T-SQL 脚本: declare ***@max_fsrq datetime declare ***@currJJDM varchar ( 10 ) declare ***@temp table ( jjdm2 varchar ( 10 )) declare ***@useTime datetime declare ***@jjdmList varchar ( 8000 ) set ***@useTime = GETDATE (); insert into ***@temp ( jjdm2 ) select jjdm from [FundYield] group by jjdm order by jjdm asc while EXISTS ( select jjdm2 from ***@temp ) begin set ***@currJJDM =( select top 1 jjdm2 from ***@temp ) select ***@max_fsrq = MAX ( fsrq ) from [FundYield] where jjdm = ***@currJJDM delete from ***@temp where jjdm2 = ***@currJJDM print ***@max_fsrq set ***@jjdmList = ***@jjdmList + ',' + ***@currJJDM end print 'T-SQL Execute Times(ms):' print datediff ( ms , ***@useTime , getdate ()) 根据该脚本,编写程序直接使用 (未使用任何框架)来完成相同的功能,程序使用两个数据库,连接字符串如下: <add name ="default" connectionString ="Data Source=;Initial C atalog=WFT_110603;uid=sa;pwd=sasa"/> <add name ="express" connectionString ="Data Source=;Initial Catalog=WFT;uid=sa;pwd=sasa"/> 下面是测试结果: ------ 单数据库,单线程测试--------- used all time is(s):676 ------ 双数据库,单线程测试--------- used all time is(s):396 ------ 双数据库,多线程测试--------- Tread 1 used all time is(s):231 Tread 2 used all time is(s):236 ====All pleted!======== ------ 单数据库,单线程测试--------- used all time is(s):690 ------ 双数据库,单线程测试--------- used all time is(s):393 ------ 双数据库,多线程测试--------- Tread 1 used all time is(s):220 Tread 2 used all time is(s):224 ====All pleted!======== ------ 单数据库,单线程测试--------- used all time is(s):582 ------ 双数据库,单线程测试--------- used all time is(s):400 ------ 双数据库,多线程测