我有3个SQL Server 2008实例,每个实例位于不同的机器上,每个实例上有多个数据库。我的SAN上有2个单独的LUN用于MDF和LDF文件。 NDX和TempDB文件在每台计算机上的本地驱动器上运行。是O.K. 3个实例共享数据文件的相同卷和日志文件的另一个卷?
我没有SAN上的精简配置,所以我不想保留创建多个卷的磁盘空间,因为我被告知我应该为每个实例创建一个卷(驱动器号),如果不是每个数据库。我知道我应该至少拆分我的日志和数据文件。没有实例可以共享实际的数据库文件,只有驱动器上的空间。
任何帮助都是有意义的。
答案 0 :(得分:2)
当然答案是:“这取决于”。我可以试着给你一些关于它取决于什么的提示。
SQL Server实例“假定”它具有对其资源的独占访问权。因此,它将默认填充所有可用的RAM,它将使用所有CPU,并且它将尝试使I / O通道饱和以获得最大性能。这就是为了保持您的实例不会同时访问相同磁盘的一般建议的原因。
另一件事是SQL Server“知道”顺序I / O访问为您提供比随机I / O更高的trhoughput,因此有很多机制在起作用(如日志文件组织,预读,惰性写入器和其他)尽可能避免随机I / O.
现在,如果三个SQL Server实例同时在一个卷上执行顺序I / O请求,那么从卷的角度来看,您再次收到随机I / O请求,这会损害您的性能。
话虽如此,如果您的I / O子系统是一个重要的瓶颈,这只是一个问题。如果您的日志文件卷足够快以至于来自实例的混合顺序写入不会产生问题,那么请继续。如果实例上有足够的RAM可以在大多数时间从缓冲区高速缓存中满足数据读取,则I / O子系统上的读取性能不会很高。
在每种情况下应避免的是在日志或数据文件上的多个增长步骤。如果一个文件系统上的多个文件正在增长,您将会出现碎片,碎片可能会将顺序读取或写入请求转换为单个源到随机I / O.
如果您将SSD用作磁盘,则整个画面会再次发生变化。这些有完全不同的要求和行为,但由于你没有说任何关于SSD的事情,我会假设你使用“传统的”基于磁盘的阵列或RAID配置。
简短摘要:如果情况合适,您可能会放弃它,但是从SAN和SQL的角度来看,如果不了解更多有关系统的信息,很难进行评估。