我有 3 个 SQL Server 2008 实例,每个实例位于不同的计算机上,每个实例上有多个数据库。我的 SAN 上有 2 个独立的 LUN,用于存放 MDF 和 LDF 文件。 NDX 和 TempDB 文件在每台计算机的本地驱动器上运行。可以吗?让 3 个实例共享同一个数据文件卷和另一个日志文件卷?
我在 SAN 上没有精简配置,因此我不想限制创建多个卷的磁盘空间,因为有人建议我应该为每个实例(如果不是为每个数据库)创建一个卷(驱动器号)。我知道我至少应该分割我的日志和数据文件。没有实例会共享实际的数据库文件,仅共享驱动器上的空间。
感谢任何帮助。
最佳答案
答案当然是:“视情况而定”。不过,我可以尝试为您提供一些关于它取决于什么的提示。
SQL Server 实例“假定”它对其资源具有独占访问权。因此,默认情况下它将填充所有可用 RAM、使用所有 CPU 并尝试使 I/O channel 饱和以获得最大性能。这就是一般建议不要让您的实例同时访问相同磁盘的原因。
另一件事是 SQL Server“知道”顺序 I/O 访问比随机 I/O 提供更高的吞吐量,因此有很多机制在起作用(例如日志文件组织、预读、惰性写入器和其他)以尽可能避免随机 I/O。
现在,如果 SQL Server 的三个实例同时对单个卷执行顺序 I/O 请求,那么从卷的角度来看,您将再次收到随机 I/O 请求,这会损害您的性能。
话虽如此,只有当您的 I/O 子系统是一个重大瓶颈时,这才是一个问题。如果您的日志文件卷足够快,来自实例的混合顺序写入不会产生问题,那么请继续。如果实例上有足够的 RAM,大多数情况下可以通过缓冲区高速缓存来满足数据读取,则 I/O 子系统不需要太多读取性能。
在每种情况下,您应该避免日志或数据文件上的多个增长步骤。如果一个文件系统上的多个文件不断增长,您将获得碎片,而碎片甚至可以将顺序读取或写入请求从单个源再次转换为随机 I/O。
如果您使用 SSD 作为磁盘,整个情况会再次发生变化。这些具有完全不同的要求和行为,但由于您没有提及 SSD,我会假设您使用“传统”基于磁盘的阵列或 RAID 配置。
简短摘要:如果情况合适,您可能会侥幸逃脱惩罚,但如果不从 SAN 和 SQL 角度了解更多有关系统的信息,就很难进行评估。
关于sql-server - SAN 上的数据共享卷(多个 MDF)和另一个日志共享卷(多个 LDF),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12649589/