博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
堆结构导致数据文件不能收缩
阅读量:6590 次
发布时间:2019-06-24

本文共 997 字,大约阅读时间需要 3 分钟。

  堆(heap)结构时,有一种情形导致表(table)的空间持续增长,却不能收缩。

一、搭建测试环境

1. 创建数据库

CREATE DATABASE [db01]

ON  PRIMARY

( NAME = N'db01', FILENAME = N'C:\sqldata\db01.mdf' , SIZE = 5120KB , FILEGROWTH = 1024KB )

LOG ON

( NAME = N'db01_log', FILENAME = N'C:\sqldata\db01_log.ldf' , SIZE = 1024KB , FILEGROWTH = 1024KB)

ALTER DATABASE [db01] SET RECOVERY SIMPLE

2. 创建表

USE db01

CREATE TABLE table1

(UserID int,pwd char(20),OtherInfo char(4100),modifydate datetime)

3. 添加记录

DECLARE @i int

SET @i=0

WHILE @i<1000

BEGIN

INSERT INTO table1

SELECT @i, cast(floor(rand()*100000) as varchar(20)), cast(floor(rand()*100000) as char(4100)), GETDATE()

SET @i=@i+1

END

4. 删除记录,只保留最后一条记录

DELETE table1 WHERE UserID < 999

5. 尝试收缩数据文件

DBCC SHRINKFILE (N'db01' , 0, TRUNCATEONLY)

6. 查看数据库的磁盘使用空间

  此时,mdf文件为11MB。而这个数据库最初创建时为5MB。

二、回收空间的2种方法

1. 创建聚集索引,再收缩

CREATE CLUSTERED INDEX IX_table1_UserID ON table1 (UserID)

DBCC SHRINKFILE (N'db01' , 0, TRUNCATEONLY)

2. 重建表,再收缩

ALTER TABLE table1 REBUILD

DBCC SHRINKFILE (N'db01' , 0, TRUNCATEONLY)

转载地址:http://ztzio.baihongyu.com/

你可能感兴趣的文章
Ajax技术细节
查看>>
nuxt.js部署vue应用到服务端过程
查看>>
删除数组中的指定元素 | JavaScript
查看>>
CSS3+JS实现静态圆形进度条【清晰、易懂】
查看>>
关于树形插件展示中数据结构转换的算法
查看>>
图片加载框架之Fresco
查看>>
Spotify开源其Cassandra编排工具cstar
查看>>
高性能web建站规则(将js放在页面底部)
查看>>
Java EnumMap工作原理及实现
查看>>
阐述Spring框架中Bean的生命周期?
查看>>
虚拟内存管理
查看>>
注水、占坑、瞎掰:起底机器学习学术圈的那些“伪科学”
查看>>
大数据小视角1:从行存储到RCFile
查看>>
JavaScript常用设计模式
查看>>
第18天:京东网页头部制作
查看>>
好消息:Dubbo & Spring Boot要来了
查看>>
面向对象封装的web服务器
查看>>
南开大学提出新物体分割评价指标,相比经典指标错误率降低 69.23%
查看>>
初创公司MindMaze研发情绪反应VR,让VR关怀你的喜怒哀乐
查看>>
绕开“陷阱“,阿里专家带你深入理解C++对象模型的特殊之处
查看>>