delete数据后,会有ghost record,不一定马上清除的

解决方案 »

  1.   


    name rows reserved data index_size unused
    STOCK 2720144809 170584496 KB 169145272 KB 1382808 KB 56416 KB
    SALES 2761741296 114223816 KB 113301496 KB 879560 KB 42760 KB
    TRANS 80095062 10007264 KB 3216056 KB 6616032 KB 175176 KB
    ORDER 171336977 13644464 KB 8439864 KB 5172096 KB 32504 KB
    Item 287137970 39221512 KB 38983240 KB 218384 KB 19888 KB
    SUM_SALES 127987380 2757568 KB 2697848 KB 30088 KB 29632 KB
    看下我用sp_spaceused'tb'出来的结果
      

  2.   

    针对重点的几个大表重建索引试试..DBCC DBREINDEX('[数据库名].dbo.[表名]', '', 90)
      

  3.   


    name rows reserved data index_size unused
    STOCK 2720144809 170584496 KB 169145272 KB 1382808 KB 56416 KB
    SALES 2761741296 114223816 KB 113301496 KB 879560 KB 42760 KB
    TRANS 80095062 10007264 KB 3216056 KB 6616032 KB 175176 KB
    ORDER 171336977 13644464 KB 8439864 KB 5172096 KB 32504 KB
    Item 287137970 39221512 KB 38983240 KB 218384 KB 19888 KB
    SUM_SALES 127987380 2757568 KB 2697848 KB 30088 KB 29632 KB
    看下我用sp_spaceused'tb'出来的结果
    看了你的这个数据。
    你也就是 TRANS 和ORDER 表删了几G数据,
    当然 收缩不了多少空间了。。
    然后也没必要收缩,,你每天有数据的话,几G数据 很快就填充了。
     -- 麻烦楼主,贴一下这个结果SELECT df.[file_id]        
               ,df.[size]
               ,(CAST(df.[size] AS BIGINT) * 8 / 1024.0) AS [ziseMB]
               ,(size-FILEPROPERTY(df.name,'SpaceUsed'))/128.0 as free_space_MB
               ,df.max_size,
               df.[growth],
               df.is_percent_growth 
                 ,df.[name]
               ,df.physical_name
        FROM   sys.database_files df
               LEFT JOIN sys.filegroups f
                    ON  df.data_space_id = f.data_space_id
                 CROSS APPLY(
    select name,suser_sname(owner_sid) AS ownerName,d.create_date,recovery_model_desc
    from sys.databases d WHERE d.name=DB_NAME()
                 ) r1
      

  4.   

    file_id size ziseMB free_space_MB max_size growth is_percent_growth name physical_name
    1 68846392 537862.4375 498565.0625 -1 128 0 DATA F:\DataFile\DATA.mdf
    2 435056 3398.875 3358.640625 268435456 10 1 DATA_log D:\DataFile\DATA_log.ldf
    3 3840 30 29.9375 -1 1280 0 DATA201105 F:\DataFile\DATA201105.ndf
    4 3072 24 23.9375 -1 1280 0 DATA201106 F:\DataFile\DATA201106.ndf
    5 3840 30 29.9375 -1 1280 0 DATA201107 F:\DataFile\DATA201107.ndf
    6 2178176 17017 7750.875 -1 1280 0 IMPORT D:\DataFile\IMPORT.ndf
    7 128 1 0.9375 -1 1280 0 DATA201001 F:\DataFile\DATA201001.ndf
    8 128 1 0.9375 -1 1280 0 DATA201002 F:\DataFile\DATA201002.ndf
    9 128 1 0.9375 -1 1280 0 DATA201003 F:\DataFile\DATA201003.ndf
    10 128 1 0.9375 -1 1280 0 DATA201004 F:\DataFile\DATA201004.ndf
    11 256 2 1.875 -1 1280 0 DATA201101 F:\DataFile\DATA201101.ndf
    12 768 6 5.9375 -1 1280 0 DATA201102 F:\DataFile\DATA201102.ndf
    13 896 7 6.9375 -1 1280 0 DATA201103 F:\DataFile\DATA201103.ndf
    14 768 6 5.9375 -1 1280 0 DATA201104 F:\DataFile\DATA201104.ndf
    15 128 1 0.9375 -1 1280 0 DATA201005 F:\DataFile\DATA201005.ndf
    16 128 1 0.9375 -1 1280 0 DATA201006 F:\DataFile\DATA201006.ndf
    17 128 1 0.9375 -1 1280 0 DATA201007 F:\DataFile\DATA201007.ndf
    18 128 1 0.9375 -1 1280 0 DATA201008 F:\DataFile\DATA201008.ndf
    19 3840 30 29.9375 -1 1280 0 DATA201108 F:\DataFile\DATA201108.ndf
    20 3072 24 23.9375 -1 1280 0 DATA201109 F:\DataFile\DATA201109.ndf
    21 3328 26 25.9375 -1 1280 0 DATA201110 F:\DataFile\DATA201110.ndf
    22 3072 24 23.9375 -1 1280 0 DATA201111 F:\DataFile\DATA201111.ndf
    23 3328 26 19.75 -1 1280 0 DATA201112 F:\DataFile\DATA201112.ndf
    24 1158040 9047.1875 8557.5625 -1 1280 0 DATA201201 F:\DataFile\DATA201201.ndf
    25 1120016 8750.125 0 -1 1280 0 DATA201202 F:\DataFile\DATA201202.ndf
    26 1202536 9394.8125 8.125 -1 1280 0 DATA201203 F:\DataFile\DATA201203.ndf
    27 1202816 9397 7.6875 -1 1280 0 DATA201204 F:\DataFile\DATA201204.ndf
    28 1280760 10005.9375 2.8125 -1 1280 0 DATA201205 F:\DataFile\DATA201205.ndf
    29 1259152 9837.125 4.25 -1 1280 0 DATA201206 F:\DataFile\DATA201206.ndf
    30 1315504 10277.375 1.6875 -1 1280 0 DATA201207 F:\DataFile\DATA201207.ndf
    31 1337272 10447.4375 0.625 -1 1280 0 DATA201208 F:\DataFile\DATA201208.ndf
    32 1288080 10063.125 1.375 -1 1280 0 DATA201209 F:\DataFile\DATA201209.ndf
    33 1247784 9748.3125 3.4375 -1 1280 0 DATA201210 F:\DataFile\DATA201210.ndf
    34 1192056 9312.9375 6.0625 -1 1280 0 DATA201211 F:\DataFile\DATA201211.ndf
    35 1221600 9543.75 2.75 -1 1280 0 DATA201212 F:\DataFile\DATA201212.ndf
    36 1573784 12295.1875 5.875 -1 1280 0 DATA201301 F:\DataFile\DATA201301.ndf
    37 1103360 8620 5.625 -1 1280 0 DATA201302 F:\DataFile\DATA201302.ndf
    38 1518080 11860 1.3125 -1 1280 0 DATA201303 F:\DataFile\DATA201303.ndf
    39 1539840 12030 6.9375 -1 1280 0 DATA201304 F:\DataFile\DATA201304.ndf
    40 1619200 12650 8.75 -1 1280 0 DATA201305 F:\DataFile\DATA201305.ndf
    41 1624320 12690 1.125 -1 1280 0 DATA201306 F:\DataFile\DATA201306.ndf
    42 1644800 12850 8.625 -1 1280 0 DATA201307 F:\DataFile\DATA201307.ndf
    43 1693440 13230 3.8125 -1 1280 0 DATA201308 F:\DataFile\DATA201308.ndf
    44 1656320 12940 7.625 -1 1280 0 DATA201309 F:\DataFile\DATA201309.ndf
    45 1697720 13263.4375 0.0625 -1 1280 0 DATA201310 F:\DataFile\DATA201310.ndf
    46 1463040 11430 5.9375 -1 1280 0 DATA201311 F:\DataFile\DATA201311.ndf
    47 1702400 13300 5.1875 -1 1280 0 DATA201312 F:\DataFile\DATA201312.ndf
    48 1900800 14850 1.3125 -1 1280 0 DATA201401 F:\DataFile\DATA201401.ndf
    49 1649920 12890 16.8125 -1 1280 0 DATA201402 F:\DataFile\DATA201402.ndf
    50 1864960 14570 1.25 -1 1280 0 DATA201403 F:\DataFile\DATA201403.ndf
    51 1832960 14320 2.75 -1 1280 0 DATA201404 F:\DataFile\DATA201404.ndf
    52 1804800 14100 8.3125 -1 1280 0 DATA201405 F:\DataFile\DATA201405.ndf
    53 1251840 9780 4 -1 1280 0 DATA201406 F:\DataFile\DATA201406.ndf
    54 3840 30 29.9375 -1 1280 0 DATA201407 F:\DataFile\DATA201407.ndf
      

  5.   

    我删除日志文件 是指   shrink 不是网上那种牛逼的删掉LOG文件
      

  6.   

    那叫收缩,不叫删除我删除日志文件 是指   shrink 不是网上那种牛逼的删掉LOG文件
      

  7.   

    file_id size ziseMB free_space_MB max_size growth is_percent_growth name physical_name
    1 68846392 537862.437500 498565.062500 -1 128 0 DATA F:\DataFile\DATA.mdf
    这个文件就是我想解决的文件....不知道为啥这么大了...
      

  8.   

    因为是mdf,默认情况下,如果你创建对象没有指定文件组,会全部写入主文件组中,而无论是否指定文件组,元数据信息还是会写入主文件组中,如果你的所有文件都在一个文件组中,会按空余空间的百分比等比例写入各个文件,容易造成hot-page等问题。
      

  9.   


    DATA这个文件空闲的空间应该是来源于
    name rows reserved date index_size unused
    PPPitemDaily 216030747   40619624 KB 24553648 KB 15750096 KB 315880 KB
    PPPDailyCount 1174286172  288415120 KB 238117104 KB 50248104 KB 49912 KB这两个表被我truncate了. 这里面记录的东西使用率不是很高,我干掉了
      

  10.   

    truncate之后可以收缩一下这个文件
      

  11.   

    我TRUNCATE之后...我就把表DROP了.....扎个办?
      

  12.   

    没用的话drop也没所谓,一样可以收缩
      

  13.   

    情况是这样的我接受的数据库,有一个大小是525G ,我删除了很多数据之后还是525G,但是我做收缩的时候 老是失败...我也就不收缩了 
    收缩报了什么错 还没说吧。  
    -- 收缩语句,会执行很慢的(数据会大量的在移动)
    DBCC SHRINKFILE (1 , 102400) --将fileid为2收缩到100GB
    GO
    DBCC SHRINKFILE (1 , 102400) --将fileid为1收缩到100GB
    GO
      

  14.   

    情况是这样的我接受的数据库,有一个大小是525G ,我删除了很多数据之后还是525G,但是我做收缩的时候 老是失败...我也就不收缩了 
    收缩报了什么错 还没说吧。  
    -- 收缩语句,会执行很慢的(数据会大量的在移动)
    DBCC SHRINKFILE (1 , 102400) --将fileid为2收缩到100GB
    GO
    DBCC SHRINKFILE (1 , 102400) --将fileid为1收缩到100GB
    GO
    先释放空间,然后点收缩对吗?
    上次出错,我顺手就点了...忘记切图了.
      

  15.   

    我收缩的时候一般是直接把空闲空间找到了,直接收缩.
    537,862   最小为39464
    我就填写成 缩小到39464那肯定死的人多了,收缩是极其消耗资源的操作,并且导致整个库最多只读,严重情况下无法访问。还是那句,每次100~500M,用个while循环反而快很多
      

  16.   

    行啊 我试试52MB的 嘿嘿 行了  . 大兄弟,谢谢啦
     
    我写了个脚本你看看 是这样的对不对declare @StartSize int 
    DECLARE @EndSize int
    declare @step intSET @StartSize=537802
    SET @EndSize=40000*2
    set @step=50while @n<=@EndSize begin
    set @StartSize=@StartSize-@step
    DBCC SHRINKFILE (1 , @StartSize)WAITFOR  DELAY 5 secondend
      

  17.   

    行啊,那 回头我试试哈.  那里改成40000*3 就行了这个很方便来着.
    我只是不确定 收缩数据库是这样写的咩DBCC SHRINKFILE (1 , @StartSize)
    1代表的应该就是那个DATA
      

  18.   

    赵兄弟,是这样的,我接手这个数据库的时候. 这个数据库文件分成三部分
    primery, data, YYYYMM(文件组)
    这三个. 现在开始清理时候 名叫data的文件 大概是525G  但是实际大小只有200G多点, 我就想把这个文件弄小的.
    这个DATA文件包括的表太多了....
      

  19.   

    declare @StartSize int 
    DECLARE @EndSize int
    declare @step intSET @StartSize=537650
    SET @EndSize=537550
    set @step=50while @StartSize<=@EndSize
     begin
    set @StartSize=@StartSize-@step
    DBCC SHRINKFILE (1 , @StartSize)
     
     WAITFOR DELAY '00:00:03'
    end
    我执行这个语句是直接一闪而过...没有任何效果
      

  20.   

    发现问题了,你的endsize根本没用到啊。逻辑有错自己改改吧
      

  21.   

    如果这是数据大头,那么先备份、删除数据库重建(不用建表)、最好恢复数据库,这样也能达到整理空间的目的。表多不是问题。
    从 SYSOBJECTS 可以得到所有的用户表名,在 Excel 中用公式生成 SQL 脚本很方便的。
    如果要区分文件,只需关联上 SYSINDEXES、SYSFILES 表。