zoukankan      html  css  js  c++  java
  • 删除变长列字段后使用DBCC CLEANTABLE回收空间

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://lzf328.blog.51cto.com/1196996/960310

    SQL Server在删除变长列或者减小变长列的长度后,表的大小不会响应自动减小,除非DBA重建索引或者reorganized索引。变长列包括varchar,nvarchar, varchar(max), nvarchar(max), varbinary, varbinary(max), text, ntext,image, sql_variant,和xml。

    SQL Server提供了一个DBCCCLEANTABLE的命令可以回收表或索引视图中已删除的可变长度列的空间。

    下面我们做个测试:

    1. --创建测试表

    CREATE TABLE testfreespace

    ( column1 INT

    ,column2 CHAR(20)

    ,column3 VARCHAR(8000))

    2. --插入数据

    DECLARE @count INT;

    SET @count = 0;

    WHILE @count < 3000

    BEGIN

    SELECT

    @count = @count + 1;

    INSERT into testfreespaceVALUES( @count,'test row # '+CAST(@countASVARCHAR(10)),REPLICATE('TestData', 3000)) ;

    END

    3. --查看使用空间使用情况

    SELECT

    alloc_unit_type_desc,

    page_count,

    avg_page_space_used_in_percent,

    record_count

    FROM sys.dm_db_index_physical_stats(DB_ID('FNDBLogtest'),OBJECT_ID(N'Testfreespace'),NULL,NULL,'Detailed')

    结果:

    alloc_unit_type_desc page_count avg_page_space_used_in_percent record_count

    -------------------------------------------------------------------------------- ------------------------------ --------------------

    IN_ROW_DATA 3000 99.2710649864097 3000

    (1 row(s) affected)

    4. --删除变长列Column3

    ALTER TABLETestfreespaceDROPCOLUMNColumn3

    5. 使用3脚本查询看到avg_page_space_used_in_percent仍然是99.2710649864097 没有改变。

    6. --执行DBCC CLEANTABLE

    DBCC CLEANTABLE(FNDBLogTest,"Testfreespace")

    7. 再次运行3脚本看到下面的结果:

    alloc_unit_type_desc page_count avg_page_space_used_in_percentrecord_count

    -------------------------------------------------------------------------------- ------------------------------ --------------------

    IN_ROW_DATA 3000 0.382999752903385 3000

    (1 row(s) affected)

    可以看到现在avg_page_space_used_in_percent已经变了,证明空间已经释放。

    更多信息参考:DBCCCLEANTABLE (Transact-SQL)http://msdn.microsoft.com/zh-cn/library/ms174418.aspx

    本文出自 “关注SQL Server技术” 博客,请务必保留此出处http://lzf328.blog.51cto.com/1196996/960310

    come from:http://lzf328.blog.51cto.com/1196996/960310

  • 相关阅读:
    [Leetcode]142. Linked List Cycle II
    c程序设计语言笔记001
    把输入一次一个字符复制到输出
    linux笔记
    转 算法之二叉树各种遍历
    将输入复制到输出
    java.lang.OutOfMemoryError处理错误
    字号对照表
    颜色十六进制对照表一
    CSS样式(转)
  • 原文地址:https://www.cnblogs.com/seasonzone/p/6124874.html
Copyright © 2011-2022 走看看