SQL Server:仅用于系统表的文件组?
-
16-10-2019 - |
题
我们的公司标准之一是为用户表/索引提供单独的文件组/文件。将其设置为默认值,因此无需限定创建表语句。
看起来像这样
- FileID 1 =系统表,MDF
- FileID 2 = T-LOG = LDF
- FileId 3 =用户材料= NDF
这里有人可以帮助我理解原始理由是为何要求的?
我会干净,说我认为这是伏都教。是 我 错误的...?
编辑:我知道如何使用文件组将索引/分区/档案的分离以及如何零散恢复。这个问题是关于在同一卷上仅用于系统表的同一卷上使用单独的文件组。
解决方案
微软的70-432培训书说:“不将任何对象放在主文件组上的主要原因是在I/O中提供尽可能多的隔离。系统对象中的数据不会像数据那样频繁地更改在您的对象中。通过将写入活动最小化为主数据文件,您可以减少由于硬件故障而引入损坏的可能性。此外,因为主要文件组的状态还确定数据库的状态,您可以增加可用性在数据库中,我最大程度地减少了对主要文件组的更改。”
因此,按照您的意愿进行。其他人则说,在某些情况下,这不是必需的,当然可以维持。只是以为我会提供微软的推理。
其他提示
这不是绩效增长,而是有恢复性的收益。如果文件损坏发生在系统表中,则数据库将丢失。如果将用户数据保存在单独的文件组(或组)中,则可以在还原过程中仅还原这些文件(在此处假设企业版)。
如果这就是为什么他们说明这一点,我不能说,但是这将是将多个文件组与主要文件组中的系统对象的好处。
但是,您应该在垃圾中踢,以说应启用AutoShrink。
不确定我明白,您是否要求某人为您的公司标准辩护?我认为,谁为贵公司编写标准文档的人都将能够阐明为什么这样做。
话虽如此,某些商店希望从用户数据中分解系统数据并不罕见。如果与专用的磁盘共同使用,则可以收获一些性能提升。
不隶属于 dba.stackexchange