在处理合理大小的sql Server数据库(比Northwind或AdventureWorks更大的数据;大约2-4GB的数据加索引等)时,您的策略/最佳实践是什么? – 您使用多个文件/文件组吗?
如果是这样:多少?为什么?
您有什么标准可以决定何时摆脱“一站式文件组”的做法:
* database size? * database complexity? * availability / reliability requirements? * what else?
如果您使用多个文件组,您使用了多少个?一个用于数据,一个用于索引,一个用于日志?数据的数量(多少)?您选择的原因是什么 – 为什么要使用确切数量的文件组:-)
感谢任何提示,指示,想法!
干杯,马克
解决方法
您正在查看数据库上的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?(链接到磁盘分区白皮书)
希望这对你有所帮助!