【问题标题】:SQL Server MDF file grows much too big for the amount of data insertedSQL Server MDF 文件对于插入的数据量来说太大了
【发布时间】:2014-11-21 15:14:17
【问题描述】:

我有一个存储二进制数据的表。它有 490,409 行。当我将二进制 varbinary(MAX) 列的数据长度相加时,总大小约为 12gb。

但是,每次我插入新行时,.MDF 文件都会以 GB 为单位增长,即使我只插入了几百 MB。自动增长设置为 5%。当我在桌子上运行sp_spaceused 时,它显示 0k 未使用。当我对数据库运行它时,我从 16320.56 MB 大小的数据库中得到 345.41 MB 未分配。

每次我将相对少量的数据插入此表时,.MDF 文件都会增长这么多,我做错了什么?

【问题讨论】:

    标签: sql-server mdf varbinarymax


    【解决方案1】:

    通过基本计算 (16320.56 × .05),即 816MB,相当接近,如果您考虑到该表中其他列上的任何其他索引,那么它可能会导致额外的增长大小。

    我个人无论如何都会放弃基于百分比的自动增长,特别是如果这让你感到困扰,并采用固定的大小增长增量。

    【讨论】:

    • 索引很小。我不明白 4gb 是从哪里来的……对于固定增长大小,您有什么建议?
    • 理想情况下,我建议预先分配您认为数据库需要的空间量并完全禁用自动增长。但有时这不是一个选择。我通常默认为 1GB,但这在很大程度上取决于数据库增长的速度以及您的硬件是什么样的。您的目标是平衡 2 个相互竞争的因素:增量足够大以减少增长量,但又不会大到影响性能。
    猜你喜欢
    • 1970-01-01
    • 2012-07-22
    • 2013-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多