SQLServer2000原来的数据库.MDF文件4M,对这个数据库进行了一段时间的操作,数据库.MDF文件增大到了12M,而虽然对这个数据库进行了一段时间的操作,但并没有增加数据库内的数据呀。对数据库进行的清除日志压缩数据等操作,现在.LDF文件只有1M,而.MDF还是12M。显然,日志没有了,数据库也没增加记录,哪么增加的这些空间干什么了?还能缩小吗?

解决方案 »

  1.   

    这个数据库进行了一段时间的操作  这个也会增加MDF的
    不过我想问下楼主  才12M  有必要缩小吗
      

  2.   

    这是自动增长的缘故,
    比如刚开始4M,然后你增加一些记录,4M不够用,它就会一次性增加一定的空间,
    增加多少空间是由你的数据库增长速度决定的,比如每次增加 10%,或者每次增加1M,
    增加多少你看看你的数据库设置就知道,比如有4M的数据,然后你设置为每次增加6M数据,
    而数据库里已经有4M的数据了,再增加一条记录,则4M不够用,就会一次性增加6M的空间,
    而这增加的6M空间里,实际只有一条记录,假设这条记录有1K,那虽然分配了6M的空间,
    其实只有1k数据是实际存有数据的,还有5M多是没有数据的。那为什么要一次性分配这么多空间出来呢?而不是用多少就分配多少,
    这是为了减少分配的次数,以及让分配空间连续,以提高性能,频繁分配空间很低效的,空间不连续会存在很多碎片,而且数据页太过分散,访问起来也很慢,当然,如果没使用的空间太多,你可以收缩那些未使用的空间,特别是删除了大量数据导致很多没使用的空间,可以在企业管理器里执行 收缩数据库 就行了,
      

  3.   


    ---运行一下,去掉冗余
       dbcc shrinkdatabase (数据库名)