我们目前的遗留系统是使用多个不同的数据库(其中大约十个)build立的。 这些都是同一个谨慎的系统的一部分,大量的SP和function跨越多个数据库。 还有跨越的关键关系(例如,头表可能在数据库A中,在数据库B中有历史等)。
因此,当我们将应用程序的多个副本部署到同一个服务器时,我们必须使用多个实例(因为数据库名称被编码为许多sprocs)。
我们正在评估将这10个数据库(总共大约30GB,个人大小从100MB到10GB)合并到一个数据库中的想法。
目前,我们的数据库已经跨越了多个主轴以获得更好的IO。 我所面临的问题是,是否有10个不同的数据库与10个不同的数据库文件有任何性能损失或好处?
即不是有三个数据库(A,B和C)
Disk D: A.mdf (1gb) Disk E: B.mdf (4gb) Disk F: C.mdf (10gb) Disk G: A_Log.ldf, B_Log.ldf, C_Log.ldf
有一个数据库(X)
Disk D: X1.mdf (5gb) Disk E: X2.mdf (5gb) Disk F: X3.mdf (5gb) Disk G: X1_log.ldf,X2_log.ldf,X3_log.ldf
谢谢! -Bob
除非数据库上的负载非常均衡,否则,如果在文件组中使用多个文件,并且在多个数据库上的单个数据库分布在各个磁盘上,则可能会看到更好的性能。 这是由于ms sql中的负载分配代码,通常比尝试为每个db手动select磁盘要好得多。
可以在http://sqlblogcasts.com/blogs/tonyrogerson/archive/2006/08/17/948.aspx上find简短的介绍,但还有很多。
你还应该看看SQL Server 2005/2008 – 多个文件/文件组 – 多less个? 为什么? ,对多个文件组的使用有很好的讨论。
哦,将所有的日志文件放在同一个磁盘上很可能会给你一个IO瓶颈,除非这个磁盘的速度很快,而且写入负载很低。 在那里小心点。
最后,检查你的IO队列。 如果你不能等待IO的话,那么你就不用担心磁盘的性能了。 这个改变也许可以激励,因为dbdevise更简洁。