O.O*_*O.O 6 sql sql-server etl sql-server-2008
出于某种原因,我的MDF文件是154gigs,但是,我只从平面文件中加载了7个数据量的数据.为什么MDF文件比实际源数据大得多?
更多信息:
只有几张表,行数约为2500万.没有大的varchar字段(最大的是300,大多数都小于varchar(50).不是很宽的表<20列.而且,没有大的表被索引.索引的表少于100万行.我不t使用char,只对字符串使用varchar.数据类型不是问题.
原来它是日志文件,而不是mdf文件.MDF文件实际上是24gigs,看起来更合理,但仍然是大恕我直言.
更新:
我通过将恢复模型从FULL更改为simple来修复了LDF(日志)文件的问题.这没关系,因为该服务器仅用于内部开发和ETL处理.另外,在更改为SIMPLE之前,我不得不缩小LOG文件.在大多数情况下不建议缩小,但是,这是日志文件从未变得如此之大和如此之快的情况之一.如需进一步阅读,请参阅此
可能有很多原因,也许您正在使用 char(5000) 而不是 varchar(5000),也许您正在使用 bigint 而不是 int、nvarchar,而您需要的只是 varchar 等。也许您每个都使用了很多索引表,这些都会加起来。也许您的自动增长设置是错误的。您确定这是 MDF 而不是 LDF 文件,对吗?
因为 MDF 分配了 154Gb,或者通过各种操作增长到 154Gb。数据库文件至少具有其中的数据大小,但它可以比使用量大任何数量。
一个明显的问题是如何衡量数据库中的数据量?你用了sp_spaceused吗?你检查了sys.allocation_units吗?你猜到了吗?
如果使用的大小确实是 154Gb 中的 7Gb,那么您应该保持原样。数据库的大小已由某人按此大小调整,或者已经增长,并且很可能会重新增长。如果您认为增长或预先调整大小是偶然的,那么前一点仍然适用,您应该保持原样。
如果您绝对肯定过度分配是错误的,则可以缩小数据库,并承担缩小的所有负面后果。