通过建立多个instance隔离资源来提高单个数据库的使用稳定性
场景是这样的,服务器安装WinServer2008R2,计划用SQLSERVER2008R2下建立多个分析类OLAP数据库(OS和数据库软件定了,不讨论其它软件方案)。
其中库A是每天会收mainframe的OLTP数据库BCP out(bcp out中间过程有一套TD数据库仓库系统过程我不清楚)出来的文件再bcp in到A库,bcp的数据量每天在100G左右甚至更大.
A库只供用户查询不能增删改。其它库是一些用户业务数据库。用户用management studio登陆该服务器,使用这些数据库做查询分析,有很多查询是其它库关联A库的数据表查询。
A库大小是TB级别,其它库是几百G以上,很多表是千万级行数。使用人员会做一些非常消耗资源的聚合排序计算查询,导致消耗大量CPU\内存\I/O等资源,数据库A没有资源来bcp in OLTP系统下来的关键业务数据。为保证A库每天能及时bcp in,计划在服务器上装2个SQLSERVER的instance,隔离两个instance的服务器资源(CPU,内存,I/O),这样就不会因用户在其它库上做非常消耗资源的查询而影响A库的BCP in(当然如果用户对A库做非常消耗资源查询也会影响A库的bcp in,但这样做至少可以避免用户对其它库的查询影响A库)。
此前想过是在A库bcp in的时候限制用户使用这个数据库系统,但这个方法不是很可行,因为bcp out的时间会经常延误导致bcp in时间不准确。
想请教各位大侠,
1.这样分2个instance处理可行么,会有其它什么不利之处?或者有什么更好的办法么?
2.数据使用人员会经常join A库和其它库的数据表做关联查询或者从A库的数据库insert到其它库。2个实例之间的跨库查询(linkserver)效率会比同一个实例下跨库查询慢吗(比如会不缓存执行计划和数据等)?