日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

RDS for SQL Server如何回收表空間

問題描述

RDS SQL Server在刪除變長列或者減小變長列的長度后,表的大小不會自動減小。其中變長列包括的字段類型有varcharnvarcharvarchar(max)nvarchar(max)varbinarytextntextimagesql_variantvarbinary(max)xml

問題原因

因為空間是不會自動回收的,每個記錄都占了一個位置。即使刪除了數據,位置也會空在那里,下次插入記錄的時候,會優先選這些空的槽位。

解決方法

您可以考慮定時重建聚集索引。另外,即使收縮了表的空間,數據庫的數據文件大小也不會變小。如果需要收縮一個SQL Server的數據文件,必須使用DBCC SHRINKDATABASE命令收縮指定數據庫的指定數據或日志文件大小,或者使用DBCC SHRINKFILE命令收縮當前數據庫的指定數據或日志文件大小。MySQL表的空間是獨立的一個文件,所以收縮MySQL的大表,可以收縮整體數據庫的大小,但是SQL Server所有的表都是在數據庫的文件里,只有收縮文件才可以縮小空間。

因為MySQL表的空間是獨立的一個文件,如果收縮MySQL的大表,會相應收縮整體數據庫的大小。又由于SQL Server所有的表存儲在數據庫的文件里,只有收縮文件才可以縮小空間。本文主要介紹以下兩種方法:

  • 方法一:使用DBCC CLEANTABLE命令回收表或索引視圖中已刪除可變長度列的空間。語法如下所示:
    DBCC CLEANTABLE  
    (  
        { database_name | database_id | 0 }  
        , { table_name | table_id | view_name | view_id }  
        [ , batch_size ]  
    )  
    [ WITH NO_INFOMSGS ]
    說明如下:
    語句描述
    database_name | database_id | 0待清除的表所在的數據庫。如果指定0,則使用當前數據庫。
    table_name | table_id | view_name | view_id待清除的表或索引視圖。
    batch_size每個事務處理的行數。如果未指定或指定為0,則該語句將在一個事務中默認處理整個表。
    WITH NO_INFOMSGS取消顯示所有信息性消息。
    具體示例如下:
    DBCC CLEANTABLE (testDB,'testTable', 0)  
    WITH NO_INFOMSGS;  
    GO
  • 方法二:重建索引。