日期:2014-05-18  浏览次数:20662 次

File和Filegroup的问题

这样一个问题,一个DB很大,其中有1张表占据了80%的空间,剩下的占据了20%,我想请问如何规划数据存储的文件和文件组,
1) 能否可以将大的那张表单独存成1个独立的文件,然后剩下的表存成一个文件?
2) 在以上基础上,如果那张表还是很大,能否可以将那张表限定存储文件的大小,比如10G,这样,超过10G就会生成一个新的文件?
3) SQL 2005中有分区的概念,不知每个表的分区是否可以保存成单独的文件?

在这些问题当中,我不明白的是文件组到底有什么用?似乎只用使用文件就可以了?有没有这方面的资料,请熟悉的人指点下。


------解决方案--------------------
一个表这么大?别说10G,1G也恐怖啊.

再说了,东西还是放在一起比较好.不然,HAPPY后回来找得辛苦.
------解决方案--------------------
1 引自联机丛书
如何将现有的表置于不同的文件组上(企业管理器)
在其它文件组上放置现有的表 

展开服务器组,然后展开服务器。


展开"数据库"文件夹,展开该表所属的数据库,然后单击"表"文件夹。


在详细信息窗格中右击表,然后单击"设计表"命令。


右击任意列,然后单击"属性"命令。


在"表"选项卡的"表文件组"列表中,选择要在其中放置表的文件组。


在"文本文件组"列表中,选择要放置任意 text、image 和 ntext 列的文件组。(可选) 

2
好像只能针对库设置,对表不行

3
不知道
------解决方案--------------------
你应该考虑把这个大表分成小表.

比如按年份,地区等.

毕竟这么大的表很恐怖啊.
------解决方案--------------------
刚刚看过2005的分区表的东西

你可以参考看下这个资料

http://www.microsoft.com/china/msdn/library/data/sqlserver/sql2k5partition.mspx?mfr=true
------解决方案--------------------
大表要分区

类似这样的大表一般都是设备提取或频繁周期性操作,几乎不做历史更改。
所以比较适合分区,主要便于统计和查询
可以依据你表的大小,按时间做分区
------解决方案--------------------
一个学校有3w学生.三个年级,平均每个年级1w人.
一个年级设一个班.一个班有1w人

想像一下,恐怖不?

分班是为了什么,分文件和分文件组也就是为了什么.