我正在创建一个数据库,其中大约有30个表,每个表包含数千万行,每个表包含一个重要列和一个主键/主键列,以在面对繁重的情况时最大化查询效率更新和插入,并大量使用聚集索引。其中两个表将包含可变长度的文本数据,其中一个表包含数亿行,而其余表仅包含数字数据。
由于我真的想从我可用的硬件(大约64GB的RAM,一个非常快的SSD和16个内核)中挤出所有性能的下降,所以我在考虑允许每个表都有自己的文件,这样无论我要加入2、3、4、5或更多表,每个表将始终使用单独的线程读取,并且每个文件的结构将与表内容紧密对齐,从而有望最大程度地减少碎片并使其更快使SQL Server添加到任何给定表的内容。
一个警告,我被困在SQL Server 2008 R2 Web Edition上。这意味着我不能使用自动水平分区,这将其排除在性能之外。
是否会在每个表中使用一个文件实际上使性能最大化,或者我是否忽略了使之多余的内置SQL Server引擎特性?
其次,如果每个表使用一个文件是有好处的,为什么create table
只给我选择将表分配给文件组而不分配给特定逻辑文件的选项?这将需要我为方案中的每个文件创建一个单独的文件组,这向我暗示SQL Server可能没有想到我所假定的优势将来自于我的建议。