关于主数据文件和辅助数据文件存储表数据分配问题

Neo_whl 2014-04-14 03:46:41
create database testdb
on primary
(name=testdb_data,
filename='d:\testdb_data.mdf',
size=5mb,
maxsize=20mb,
filegrowth=2),
(name=testdb_data1,
filename='d:\testdb_data2.ndf',
size=10,
maxsize=20,
filegrowth=2)
log on
(name=testdb_log,
filename='d:\testdb_log.ldf',
size=2,
maxsize=10mb,
filegrowth=10%),
(name=testdb_log1,
filename='d:\testdb_log2.ldf',
size=5,
maxsize=15mb,
filegrowth=1)

问题如下:
1.primary 很多教材的解释是指定主数据文件的,那么如果不加primary关键字,如上代码,后缀为.mdf格式的数据文件不也是主数据文件么,而且以前记得试验过,一个数据库下可以存在多个.mdf格式的数据文件,搞不清楚咋回事,求大神们答疑?
2.这个才是我最想问的,比如上面代码主数据文件大小为5mb,那么当我在该数据下创建了一张表并大批量导入了数据,如果该表数据量超过了主数据文件的最大容量,比如上述代码为maxsize=20mb,那么辅助数据文件是否会帮忙存储剩余的数据?另外我可不可以知道哪些数据存储在了主数据文件。哪些数据存储在了辅助数据文件呢?
这个问题记得论坛里有人提及过?但还是搞清楚
...全文
343 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Neo_whl 2014-04-14
  • 打赏
  • 举报
回复
按比例分配,每个文件写入数据的一部分,也就是说你不知道数据实际上是在哪个文件,即使知道,用处也不大,因为数据的改动可能会一定数据的存储位置,比如本来一个表的数据存在2个文件中,但是我删了其他表的一些数据,再重建聚集索引,再做些其他操作,可能这个表的数据就全部存储到一个文件中,简单来说,可能你没办法准确知道实时的数据位置。不过作为研究,DBCC PAGE命令是可以的,但是》。。。试过你就知道有多痛苦。
另外你那个那么辅助数据文件是否会帮忙存储剩余的数据?
实际上不做特殊配置的情况下,它/它们一直在协助存储,不是仅存储到主文件组中的主要文件中的。
大神收我做徒弟吧,经你这么一说明白多了,十分感谢!
發糞塗牆 2014-04-14
  • 打赏
  • 举报
回复
按比例分配,每个文件写入数据的一部分,也就是说你不知道数据实际上是在哪个文件,即使知道,用处也不大,因为数据的改动可能会一定数据的存储位置,比如本来一个表的数据存在2个文件中,但是我删了其他表的一些数据,再重建聚集索引,再做些其他操作,可能这个表的数据就全部存储到一个文件中,简单来说,可能你没办法准确知道实时的数据位置。不过作为研究,DBCC PAGE命令是可以的,但是》。。。试过你就知道有多痛苦。 另外你那个那么辅助数据文件是否会帮忙存储剩余的数据? 实际上不做特殊配置的情况下,它/它们一直在协助存储,不是仅存储到主文件组中的主要文件中的。
Neo_whl 2014-04-14
  • 打赏
  • 举报
回复
引用
1.primary 很多教材的解释是指定主数据文件的,那么如果不加primary关键字,如上代码,后缀为.mdf格式的数据文件不也是主数据文件么,而且以前记得试验过,一个数据库下可以存在多个.mdf格式的数据文件,搞不清楚咋回事,求大神们答疑? 什么都不加的情况下,创建数据库时第一个mdf文件就是primary文件,也是default文件。文件的后缀名实际上是可以改的,但是为了标识性和其他原因,不建议改,见过有些大量mdf文件的库,在还原的过程中出了不少问题。后缀名这个东西,你就算用.abc都可以 2.这个才是我最想问的,比如上面代码主数据文件大小为5mb,那么当我在该数据下创建了一张表并大批量导入了数据,如果该表数据量超过了主数据文件的最大容量,比如上述代码为maxsize=20mb,那么辅助数据文件是否会帮忙存储剩余的数据?另外我可不可以知道哪些数据存储在了主数据文件。哪些数据存储在了辅助数据文件呢? 这个问题记得论坛里有人提及过?但还是搞清楚 数据分配是按“文件组”为单位,如果一个文件组有多个文件,写入的过程中不是写满一个再一个,而是按文件的可用空间按比例增加
Huang sir神速度啊,膜拜,第2个问题看来我以前误人子弟了,以前有人问我的时候,我都是按问题2回答的,不过第2个问题Huang sir 我还是不明白。。。
發糞塗牆 2014-04-14
  • 打赏
  • 举报
回复
1.primary 很多教材的解释是指定主数据文件的,那么如果不加primary关键字,如上代码,后缀为.mdf格式的数据文件不也是主数据文件么,而且以前记得试验过,一个数据库下可以存在多个.mdf格式的数据文件,搞不清楚咋回事,求大神们答疑? 什么都不加的情况下,创建数据库时第一个mdf文件就是primary文件,也是default文件。文件的后缀名实际上是可以改的,但是为了标识性和其他原因,不建议改,见过有些大量mdf文件的库,在还原的过程中出了不少问题。后缀名这个东西,你就算用.abc都可以 2.这个才是我最想问的,比如上面代码主数据文件大小为5mb,那么当我在该数据下创建了一张表并大批量导入了数据,如果该表数据量超过了主数据文件的最大容量,比如上述代码为maxsize=20mb,那么辅助数据文件是否会帮忙存储剩余的数据?另外我可不可以知道哪些数据存储在了主数据文件。哪些数据存储在了辅助数据文件呢? 这个问题记得论坛里有人提及过?但还是搞清楚 数据分配是按“文件组”为单位,如果一个文件组有多个文件,写入的过程中不是写满一个再一个,而是按文件的可用空间按比例增加

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧