本来贴在堆栈溢出,但重新措辞。
想象一下这个场景:对于一个数据库,我有RAIDarraysR:(MDF)T :(事务日志),当然还有X:(tempDB)的共享透明用法。
我一直在阅读,并得到的印象是,如果您使用RAID,那么添加多个SQL Server NDF文件坐在R:文件组内不会有任何改进。 当然,join另一个raid数组S:并在其上放置一个NDF文件。
然而,作为一个相当精明的软件人员,假设即使对于坐在一个RAIDarrays上的较小的MDF,SQL Server将在MDF上执行增长和locking操作(用于写入),也是不可想象的,所以即使将NDF添加到文件组他们坐在R:会分发locking操作和增长操作,以获得更多的吞吐量? 或者重build来自分布式文件组的数据所花费的时间是否超过了减lesslocking的好处?
我也意识到行为和好处可能会有不同的表/ indeces /日志。
有一个很好的网站,当RAID已经到位时,区分多个文件的好处吗?
我最近回答了类似“多个数据文件和多个文件组”
提炼一个简洁的答案也相当复杂和困难。 这有助于了解SQL Server如何访问数据:请参阅“SQL Server 2000 I / O基础” ,它仍然有效
读取性能受RAM控制。 你不应该去磁盘读取数据:如果你这样做,你没有足够的内存。 在64位之前的那些日子里,如果你有一个500 GB的数据库,你只能装64GB的内存,那么你可以将索引拆分出来
当然,你不需要经常在内存中使用整个数据库,当你需要阅读它时,应该在caching中运行,直到被驱逐。 但更多的RAM永远不会出错
写性能由LDF卷pipe理。 看上面的文章提前login
如果卷发生故障,您可以将数据库文件拆分为可恢复性。 有了一个很好的备份/恢复计划,您可以单独使用MDF和LDF。
可恢复性不仅仅是RAIDarrays。 如果你的磁盘控制器失败怎么办 你的磁盘全部来自同一供应商/批次/固件? 如果2个磁盘在RAID 5中发生故障会怎么样? 一个SQL Server集群? 损坏的文件?
如果在同一个卷上有多个文件,任何读取请求将比读取一个较大的文件花费更长的时间,通常是连续的。 这就是为什么文件服务器和数据库服务器通常build造不同
你不能find一个好的网站,因为它没有完成,正如你所指出的,每个人都倾向于对同一个文件组中的多个文件说“不”。
通过分区alignment方式获得更多收益, 并使用64k群集正确格式化NTFS a