我们的公司标准之一是为用户表/索引提供单独的文件组/文件。这被设置为默认值,因此无需限定 CREATE TABLE 语句。
所以看起来像这样
- fileid 1 = 系统表,MDF
- fileid 2 = t-log = LDF
- fileid 3 = 用户资料 = NDF
这里的任何人都可以帮助我理解为什么要强制执行的原始理由吗?
我会坦白说我认为这是伏都教。难道我错了……?
编辑:我知道如何使用文件组来分离索引/分区/档案,以及如何恢复零碎。这个问题是关于在同一卷上仅对系统表使用单独的文件组。
这不是性能增益,而是可恢复增益。如果系统表中发生文件损坏,则数据库将丢失。如果您将用户数据保存在一个单独的文件组(或多个组)中,那么您可以只恢复那些在恢复期间保持数据库其余部分在线的文件(假设此处为企业版)。
如果这就是他们陈述这一点的原因,我不能说,但这将是拥有多个文件组的好处,其中只有 PRIMARY 文件组中的系统对象。
但是,您应该在垃圾邮件中说应该启用 AutoShrink。
微软的 70-432 培训书说“不将任何对象放在主文件组的主要原因是在 I/O 中提供尽可能多的隔离。系统对象中的数据不会像数据那样频繁地更改在您的对象中。通过最小化对主数据文件的写入活动,您可以减少由于硬件故障而引入损坏的可能性。此外,由于主文件组的状态也决定了数据库的状态,您可以提高可用性数据库的我最小化对主文件组所做的更改。”
所以,随你的便吧。其他人说这在某些情况下没有必要,当然更需要维护。只是想我会提供微软的推理。
不确定我是否理解,您是否要求有人证明您的公司标准是合理的?我认为,无论谁为您的公司编写该标准文档,都能够阐明为什么要这样做。
话虽如此,一些商店想要从用户数据中分离出系统数据并不罕见。如果与专用磁盘集结合使用,您可以获得一些性能提升。