sql-server – SQL Server 2005/2008 – 多个文件/文件组 – 多少个?为什么?

前端之家收集整理的这篇文章主要介绍了sql-server – SQL Server 2005/2008 – 多个文件/文件组 – 多少个?为什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是一名开发人员 – 但是时不时地,客户没有一个像样的DBA来处理这些问题,所以我被要求决定….

在处理合理大小的sql Server数据库(比Northwind或AdventureWorks更大的数据;大约2-4GB的数据加索引等)时,您的策略/最佳实践是什么? – 您使用多个文件/文件组吗?

如果是这样:多少?为什么?

您有什么标准可以决定何时摆脱“一站式文件组”的做法:

* database size?
* database complexity?
* availability / reliability requirements?
* what else?

如果您使用多个文件组,您使用了多少个?一个用于数据,一个用于索引,一个用于日志?数据的数量(多少)?您选择的原因是什么 – 为什么要使用确切数量文件组:-)

感谢任何提示,指示,想法!

干杯,马克

解决方法

基本的经验法则是将文件分隔到不同的卷上以避免争用,但是您获得的性能提升会因I / O子系统和工作负载而异.例如,就性能而言,单个物理主轴上的多个文件会很糟糕,但是具有来自RAID 10阵列的数百个驱动器的SAN LUN上的卷的相同安排可能就好了.磁盘队列长度计数器是您的朋友,是告诉您是否有I / O瓶颈的最简单方法.

您正在查看数据库上的I / O模式 – 只读,大多数读取,读写,大多数写入,只写,并且基于此.您还需要选择正确的RAID级别,并确保正确设置磁盘分区偏移,RAID条带大小和NTFS分配单元大小.有些人喜欢将非聚簇索引分成单独的文件组,但这里的性能提升就像我上面解释的那样.

性能外,还应考虑可管理性和可恢复性.拥有100GB数据库的单个单片数据文件意味着您的还原单元就是该文件.将它拆分为4个25GB文件组意味着您可以使用部分数据库可用性和零碎恢复,只有在它被损坏时才能恢复单个文件组.通过对多个文件组中的表和索引进行分区,您还可以限制数据库的哪些部分受到维护操作的影响(例如,删除索引碎片).

Tempdb是一个完整的特例,我会在你的博客文章中指出你解释了为什么以及如何拆分tempdb – 这里有很多误解.

在这里没有给你一个“全面的概括”推荐,我会给你指出一堆白皮书和博客文章供你阅读:

>白皮书:Physical Database Storage Design
>白皮书:Predeployment I/O Best Practices
>白皮书:Partitioned Tables and Indexes in SQL Server 2005
>白皮书:Partial Database Availability
>博客文章Misconceptions around TF 1118(tempdb布局)
>博客文章Are your disk partition offsets,RAID stripe sizes,and NTFS allocation units set correctly?(链接到磁盘分区白皮书)

希望这对你有所帮助!

猜你在找的MsSQL相关文章