我不是服务器pipe理员。 所以要温柔。 但是我刚刚参加了一个会议,讲师在其中一个培训课上解释了一些SQL DBA最佳实践。 其中之一就是将Mdf,Ldf和TempDB分离到不同的驱动器上以提高性能。
现在在我们的办公室,我们有一个圣。 系统pipe理员创build了3个san来驱动一个数据,一个用于日志,另一个用于TempDB。
我的直觉告诉我这是一个浪费的努力…是吗?
我不知道很多的细节,但如果你问我会尽力填写任何需要准确回答这个问题的规格。

数据库文件,事务日志文件和临时数据文件通常放在不同的卷上以减less它们之间的I / O争用,并且还可以通过为每个数据库创build多个数据文件来进一步扩展这些文件,将它们分布到更多的卷上并告诉SQL服务器应该存储特定的表和索引; 所以,对于DBA来说这是一种常见的做法,而且的确可以带来显着的性能提升。
使用SAN的时候,这也是完全没有意义的。 根据SAN的实际configuration情况,可以将不同的LUN(卷)映射到任何一组物理磁盘,RAIDarrays和存储控制器,因此两个LUN之间的I / O争用可以在“完全隔离” “有效共享相同的磁盘”。 因此,除非DBA与存储pipe理员紧密合作,否则为了在它们之间传播数据库文件而要求不同的LUN确实可能变成完全白费的工作。
但是,将数据库文件和事务日志文件分开被认为不仅是性能的最佳实践,而且也是可靠性的最佳实践:由于SQL Server使用的事务性存储引擎(以及几乎所有现有DBMS使用的类似引擎),日志文件可用于在灾难恢复场景中重放事务,使系统能够恢复最后一次备份后发生的事件。 但是,为了实现这一点,您不希望同时丢失数据文件和日志文件,因此,至less将它们放在不同的卷上,即使没有性能增益。
将数据库文件与日志文件分开的原因是因为数据库访问是随机的,日志访问是连续的。 最佳实践表明,不要将这两种I / Otypes混合在同一个磁盘上,而不pipe该磁盘如何提供给服务器(本地,DAS,iSCSI等)。 所以不,这不是一个浪费的努力。
至于tempdb,似乎是微软的build议,你把它从数据库中分离出来:
http://msdn.microsoft.com/en-us/library/ms175527(v=sql.105).aspx
如果日志只包含一个日志文件,则日志磁盘上的I / O只能是连续的。 添加另一个,你有随机的I / O。