通过建立多个instance隔离资源来提高单个数据库的使用稳定性

shzhouhuiyu 2014-09-25 12:04:19
场景是这样的,服务器安装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)效率会比同一个实例下跨库查询慢吗(比如会不缓存执行计划和数据等)?
...全文
158 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
發糞塗牆 2014-09-26
  • 打赏
  • 举报
回复
引用 4 楼 shzhouhuiyu 的回复:
@DBA_Huangzj,感谢各位回答,但我还是忍不住和你解释下,我已经说了“(OS和数据库软件定了,不讨论其它软件方案)。”,在此基础才想向各位讨论有没有其它更好的方案。”: 1. 没有混用OLTP和OLAP,我都和你说了这个Windows服务器是OLAP数据库,是从大机的OLTP数据库再经过TD数据仓库加工后再下传的; 2.至于你说的装多台机器,我们这种类似的机器已经是多台了。总容量数据超百T以上,一般是根据业务科室的需要来划分; 3.我们有数据仓库(TD和DB2的),但这SQLSERVER有存在的理由。 至于你说replication也有想过,但我们的是OLAP,不是那种响应要求高的OLTP,如果用户写出很的查询耗尽subscriber的资源也会distribute不正常。
sqlserver也有数据仓库,Replication也不仅仅是用来试试传输啊
引用 5 楼 shzhouhuiyu 的回复:
@DBA_Huangzj “另外2008 R2还有稀疏列、分区、数据压缩、过滤索引(filter index)、甚至使用复制(Replication)进行读写分离、快照隔离等等一系列技术来提高性能,不过不是啥都合适你的环境 ”你说的很好,感谢。只是我现在只care到服务器架构,因为我是运维,数据库内的表级别操作是我们IT部门的数据管理人员操作,最终用户是业务同事。 服务器里的数据快照隔离也想过,但用户在使用SQL management studio时打开一个query时要先set isolation snapshot,这种操作是否取决于用户的意愿,使用用户只是些简单TSQL逻辑知识的业务使用单位同事。如果在SQLSERVER服务器端设置所有的query的隔离级别这个方法是很可行,但我查询了很多资料也没发现SQLSERVER好像没有这个功能(不知第三方工具统一登录入口而非用management studio不知道会能不能实现)。
你把语句封装成存储过程调用就可以了,不用每次都加,而且也不只有isolation snapshot,还有read Committed snapshot
shzhouhuiyu 2014-09-25
  • 打赏
  • 举报
回复
@DBA_Huangzj “另外2008 R2还有稀疏列、分区、数据压缩、过滤索引(filter index)、甚至使用复制(Replication)进行读写分离、快照隔离等等一系列技术来提高性能,不过不是啥都合适你的环境 ”你说的很好,感谢。只是我现在只care到服务器架构,因为我是运维,数据库内的表级别操作是我们IT部门的数据管理人员操作,最终用户是业务同事。 服务器里的数据快照隔离也想过,但用户在使用SQL management studio时打开一个query时要先set isolation snapshot,这种操作是否取决于用户的意愿,使用用户只是些简单TSQL逻辑知识的业务使用单位同事。如果在SQLSERVER服务器端设置所有的query的隔离级别这个方法是很可行,但我查询了很多资料也没发现SQLSERVER好像没有这个功能(不知第三方工具统一登录入口而非用management studio不知道会能不能实现)。
shzhouhuiyu 2014-09-25
  • 打赏
  • 举报
回复
@DBA_Huangzj,感谢各位回答,但我还是忍不住和你解释下,我已经说了“(OS和数据库软件定了,不讨论其它软件方案)。”,在此基础才想向各位讨论有没有其它更好的方案。”: 1. 没有混用OLTP和OLAP,我都和你说了这个Windows服务器是OLAP数据库,是从大机的OLTP数据库再经过TD数据仓库加工后再下传的; 2.至于你说的装多台机器,我们这种类似的机器已经是多台了。总容量数据超百T以上,一般是根据业务科室的需要来划分; 3.我们有数据仓库(TD和DB2的),但这SQLSERVER有存在的理由。 至于你说replication也有想过,但我们的是OLAP,不是那种响应要求高的OLTP,如果用户写出很的查询耗尽subscriber的资源也会distribute不正常。
Mr_Nice 2014-09-25
  • 打赏
  • 举报
回复
1.这样分2个instance处理可行么,会有其它什么不利之处?或者有什么更好的办法么? A库大小是TB级别,其它库是几百G以上,很多表是千万级行数。消耗大量CPU\内存\I/O等资源 如果你的单机性能非常高,单机多实例处理是OK的。但是效率和后面的可维护性,lz要关注一下,一旦崩了,是很难在短期内恢复的。考虑到面向对象,解耦这些关系的方式。建议还是使用两个性能不那么高的独立机器。一旦一方发生问题,单独的排查也来得方便些。 TB级别的数据,磁盘阵列选一个好一些的,会对查询的性能有不少的提高。 2.数据使用人员会经常join A库和其它库的数据表做关联查询或者从A库的数据库insert到其它库。2个实例之间的跨库查询(linkserver)效率会比同一个实例下跨库查询慢吗(比如会不缓存执行计划和数据等)? 这个基本是可以肯定的,独立的单一实例下的查询,肯定会比多实例的跨库查询要来得慢。 更多细节就像2楼说的,具体情况具体分析。 还是那句老话,前期考虑可行,中期考虑优化,后期考虑重构。 参考
發糞塗牆 2014-09-25
  • 打赏
  • 举报
回复
具体问题具体分析,也要实际情况分析,就靠你这几十行字,不可能给出非常有用的信息,所以我仅给出个人看法: 1、你这环境为什么不考虑多台服务器?而要混用OLTP和OLAP?这是大忌,看规模预算应该不会没有吧。 2、就先假设你要在一台机上,然后回答你的问题: 1.这样分2个instance处理可行么,会有其它什么不利之处?或者有什么更好的办法么? 可以,但是多个实例依旧用同一个实体机的资源,分开机器更好。如果保留一个实例上,可以用资源调控器来控制一个实例上的资源使用。如果多个实例,可以用windows上的类似功能(一时间想不起来叫什么了)管控多个实例的资源。sqlserver在多实例环境下,实行先申请先分配的内存机制,所以要设置每个实例的内存,否则可能后一点申请的那个实例没多少资源可用。 但是:一切数值都要经过监控才能分配,不如内存,如果随便丢个值,那可能导致实例A分配了很多,但是实际上用了很少,而实例B其实需要很多,但是没分给它多少。 最终建议:分开机器,然后每个机器使用一个实例,生产环境尽可能不用多实例共存一台宿主机。 2.数据使用人员会经常join A库和其它库的数据表做关联查询或者从A库的数据库insert到其它库。2个实例之间的跨库查询(linkserver)效率会比同一个实例下跨库查询慢吗(比如会不缓存执行计划和数据等)? 两个实例之间几乎必然会比同一个实例慢,因为很多必须的信息是不知道的。另外还要校验权限问题。个人建议: 建立一个真正的数据仓库,然后做CUBE来提供快速报表创建。 另外2008 R2还有稀疏列、分区、数据压缩、过滤索引(filter index)、甚至使用复制(Replication)进行读写分离、快照隔离等等一系列技术来提高性能,不过不是啥都合适你的环境
xiaodongni 2014-09-25
  • 打赏
  • 举报
回复
太高级,我不会啊

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧