求高手给力的解释--关于数据文件
在用SQL进行的生产环境中,单个数据库主文件MDF已经到达20多G,考虑进行文件分组管理,测试机用备份恢复一个实例,在管理界面中随意建立了几个文件组和一些测试文件,并且更改了默认数据组,在做完操作确定的瞬间数据文件的分布发生了改变,结果如下:
---------------------------------------------
HO_DATA E:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\HO_0621.MDF
640 64000 PRIMARY 0
menzhen E:\menzhen.ndf 1024 10 menzhen 0
test1 E:\test1.ndf 5120 10 PRIMARY 0
test2 E:\test2.ndf 5120 10 PRIMARY 0
test3 E:\test3.ndf 5120 10 PRIMARY 0
test4 E:\test4.ndf 5120 10 PRIMARY 0
test5 E:\test5.ndf 5120 10 PRIMARY 0
test6 E:\test6.ndf 5120 10 test 1
goo E:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\goo.ndf
0 10 gg 0
--------------------------------------------------
从上边的数据可以看出,主文件从原来的20多G变成了600多M,而其他建立的5G大小的PRIMARY和TEST文件组中的文件基本平均分布了数据,按照单个文件收缩看了一下,每个数据文件均占用了80%左右的空间.
按照MS的官方解释,如果在数据库中创建对象时没有指定对象所属的文件组,对象将被分配给默认文件组。不管何时,只能将一个文件组指定为默认文件组。默认文件组中的文件必须足够大,能够容纳未分配给其他文件组的所有新对象。PRIMARY 文件组是默认文件组,除非使用 ALTER DATABASE 语句进行了更改。但系统对象和表仍然分配给 PRIMARY 文件组,而不是新的默认文件组。
很明显的,在上边的测试结果中主数据文件的大小发生了改变,但应该不是所谓的只有系统对象和表,因为系统对象和表是分配给PRIMARY文件组的,奇怪的是数据为什么看起来似乎是平均得分配到了每个数据文件中,而且在随后的测试中仿照之前的操作步骤对另外恢复的数据库无论如何都没有重现这种测试结果.
在上边的测试结果操作的过程中并未进行DBCC SHRINKFILE(XX,EMPTYFILE)之类的操作,但这种情况为什么会发生,怎么发生的?因为这种情况恰恰是解决单个数据文件过大,提高IO及并行操作的解决方案,在生产环境中并没有时间去等待进行DBCC SHRINKFILE(XX,EMPTYFILE)之类的操作,也不大现实去在生产中移动一些表到不同的数据文件并且重建索引等操作.
求解!
---------------------------------------------
HO_DATA E:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\HO_0621.MDF
640 64000 PRIMARY 0
menzhen E:\menzhen.ndf 1024 10 menzhen 0
test1 E:\test1.ndf 5120 10 PRIMARY 0
test2 E:\test2.ndf 5120 10 PRIMARY 0
test3 E:\test3.ndf 5120 10 PRIMARY 0
test4 E:\test4.ndf 5120 10 PRIMARY 0
test5 E:\test5.ndf 5120 10 PRIMARY 0
test6 E:\test6.ndf 5120 10 test 1
goo E:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\goo.ndf
0 10 gg 0
--------------------------------------------------
从上边的数据可以看出,主文件从原来的20多G变成了600多M,而其他建立的5G大小的PRIMARY和TEST文件组中的文件基本平均分布了数据,按照单个文件收缩看了一下,每个数据文件均占用了80%左右的空间.
按照MS的官方解释,如果在数据库中创建对象时没有指定对象所属的文件组,对象将被分配给默认文件组。不管何时,只能将一个文件组指定为默认文件组。默认文件组中的文件必须足够大,能够容纳未分配给其他文件组的所有新对象。PRIMARY 文件组是默认文件组,除非使用 ALTER DATABASE 语句进行了更改。但系统对象和表仍然分配给 PRIMARY 文件组,而不是新的默认文件组。
很明显的,在上边的测试结果中主数据文件的大小发生了改变,但应该不是所谓的只有系统对象和表,因为系统对象和表是分配给PRIMARY文件组的,奇怪的是数据为什么看起来似乎是平均得分配到了每个数据文件中,而且在随后的测试中仿照之前的操作步骤对另外恢复的数据库无论如何都没有重现这种测试结果.
在上边的测试结果操作的过程中并未进行DBCC SHRINKFILE(XX,EMPTYFILE)之类的操作,但这种情况为什么会发生,怎么发生的?因为这种情况恰恰是解决单个数据文件过大,提高IO及并行操作的解决方案,在生产环境中并没有时间去等待进行DBCC SHRINKFILE(XX,EMPTYFILE)之类的操作,也不大现实去在生产中移动一些表到不同的数据文件并且重建索引等操作.
求解!
...全文
相关推荐
求阶梯杆轴力.py
求阶梯杆轴力.py
轴向力及径向力计算.rar
轴向力及径向力计算.rar
数据文件设置中点电荷的库仑力。:该程序根据包含位置和电荷值的数据文件计算库仑力,该数据文件以简单矢量形式与定义的电荷进行对比。-matlab开发
zip中的文件:coulomb_forces_001.m %%%%%%%%%%%%%%%%%%%%%%%%% 注意:您必须创建一个包含测试点电荷周围的点电荷的数据文件,文件名为“data_coulomb_001.dat”,格式如下: x1 y1 z1 电荷1 x2 y2 z2 充电 2 ……………… xn yn zn charge n 这是要在程序中打开的文件。 %%%%%%%%%%%%%%%%%%%%%%%%% 首先定义要根据数据文件中写入的一组费用计算费用的点。 p_001 被定义为示例测试点电荷,在本例中为 [0 0 0],charge = 1。此信息包含在格式 [xyz "CHARGE VALUE" ] 中。 这意味着 p_001 = [ 0 0 0 1 ]。 数据文件中的数据也具有这种格式。 第 4 列是 CHARGE VALUE。 你所要做的就是修改数据文件中的
Social force model_社会力模型_社会力疏散_social_Social-force-model_疏散
模拟行人从房间疏散过程,基本原理采用社会力模型
matlab程序包-光镊力数值模拟.zip
matlab光镊力数值模拟


疑难问题
