我是一名软件开发人员,但这个月我必须做一些数据库管理任务。我对如何拆分数据库有一些知识上的空白,这是我的第一个方法:
- 表的文件组
- 非变更表的文件组
- 适用于高数据表的文件组
- 文本和图像的文件组
另外,我有一个 SAN,其中 RAID1 磁盘用于存储事务日志,RAID6 磁盘用于存储数据库文件。
我的问题是,使用此数据库配置,我必须为每个文件组创建一个文件吗?文件组配置正确吗?是否存在性能漏洞?
提前致谢
答案1
这个数据库有多大?它可能会承受多少流量?
我们的 SQL 服务器数据库均尚未达到需要多个文件用于存储数据、一个文件用于存储日志的程度。
正如 doug_w 所说,测试各种配置并查看它们的性能。但请记住不要过度,使维护变得更加困难,因为这会使您的平均响应时间加快 10%,而简单配置的平均响应时间是 0.1 秒。
编辑:在您给出大小和用户数的评论之后。我的感觉是,如何拆分数据将取决于它们都在做什么。它们是否都会访问相同的几个表,还是它们都会访问大多数表,还是相当随机分布?如果所有用户都可能访问相同的表,无论是少数还是大多数。那么我的第一个测试配置是将数据全部放在一组磁盘上的一个文件中。显然,这只是一个开始,因此仍需要测试。
另外,我刚注意到您说您已经有了一个用于数据的 RAID 6。您能改变它吗,比如将其改为 2 个独立的阵列。如果所有文件都在同一组主轴上,那么将数据库拆分为单独的文件组不会获得任何性能提升。如果您只能使用一组磁盘,那么将数据库拆分到文件组的唯一原因就是为了简化维护。备份之类的操作可以在文件组级别完成,因此,如果您将所有经常更改的数据分组到一个文件组中,那么您就可以更频繁地备份这些数据,而不必备份大量的静态数据。
同样,这取决于您的备份策略,如果您的恢复期限不是很紧迫,那么您可能对每晚的完整备份感到满意,而白天只记录备份。
答案2
如果您指定目的,您可能会得到更好的答案,但这里可以为您提供有关此事的一些一般信息:使用文件和文件组。
每个文件组至少需要一个文件。如果向文件组添加多个文件,SQL Server 将根据文件大小按比例使用这些文件(仅限数据文件,日志文件的处理方式不同)。
频繁连接且存在于单独文件组中的表可以提高性能。
测试测试测试。
高血压