日期:2014-05-16  浏览次数:20403 次

关于SQL2008数据存储问题
现在有3个数据文件fuzhu.mdf,fuzhu1.mdf,fuzhu2.mdf,数据文件是没有控制其增长大小的,其中fuzhu.mdf是主数据文件;我想请教下SQL Server是如何向这几个表里写数据的,如果数据库里有个表T,那么这3个数据文件里是否都存在这个表T,如果向这个表T里写数据,这3个数据文件是否会同时写进数据?平时只在往数据库里写数据,没有去了解Sql Server是如何存储数据的,请知道的兄弟告知下,谢啦!!!
------解决方案--------------------
如果按照我的理解,应该不会用到三个数据库文件,当你插入的表足够大的时候,超过了主数据文件,这个时候服务器会使用辅助数据文件,而且我也有一点不明白,一个数据库下应该只有一个主数据库文件吧,那么其他应该是辅助数据文件后缀应该是.ndf,但确实当你的文件格式均为.mdf好像也不会报错嘛!等大神答疑。
------解决方案--------------------
你的描述有问题。

在sql server 2008中,应该是只能有一个mdf文件的,其他的都是ndf文件,也就是次要数据文件。

另外,你说的数据会放到那个文件,这个是和文件组有关的,和具体的文件没有关系。

当你创建一个表时:

create table test(id int,v varchar) [primary]

指定了文件组primary,也就是主文件组,这个表的数据就会放到主文件组中,当然,如果这个主文件组有多个文件,那么这个表的数据,一般会相对均匀的存放到这多个文件中的。
------解决方案--------------------
引用:
你的描述有问题。

在sql server 2008中,应该是只能有一个mdf文件的,其他的都是ndf文件,也就是次要数据文件。

另外,你说的数据会放到那个文件,这个是和文件组有关的,和具体的文件没有关系。

当你创建一个表时:

create table test(id int,v varchar) [primary]

指定了文件组primary,也就是主文件组,这个表的数据就会放到主文件组中,当然,如果这个主文件组有多个文件,那么这个表的数据,一般会相对均匀的存放到这多个文件中的。

小知识,可以有多个mdf哦
------解决方案--------------------
主要數據文件(一個), 次要數據文件(可多個),
數據文件之間按照可用空間的比例進行填充, 數據文件如何記錄數據是由文件組來控制的, 文件組采用的是比例填充策略, 當將數據寫入文件組時, 根據文件中的可用空間將一定比例的數據寫入文件組的每個文件.
------解决方案--------------------
建表时默认指定表所属的文件组,向表中插入数据时基本均匀分布到文件组的所有文件中,也不是绝对的,有时候文件组中的两个文件IO速度不一样,速度快的文件就会写的多一点。