收缩数据库

简介: 大家都用过企业管理器中的--“收缩数据库”,里面的功能的确可以收缩数据库的日志文件(.ldf)和数据文件(.mdf),但都会发现同样的问题,在收缩“数据文件”(.mdf)时根本收缩不了多少。最多截段自动增长部份的,没有根本释放在日常操作中删除数据库的沉冗空间。
大家都用过企业管理器中的--“收缩数据库”,里面的功能的确可以收缩数据库的日志文件(.ldf)和数据文件(.mdf),但都会发现同样的问题,在收缩“数据文件”(.mdf)时根本收缩不了多少。最多截段自动增长部份的,没有根本释放在日常操作中删除数据库的沉冗空间。

  上述应该是很多人遇到过的,笔者也千试万试试出来的方法,为了确定您的数据库安全,在执行下例的操作前,请先备份你的数据库。

  1.首先你要找到你的数据库最大的表,一般是数目最大的表,如果不清楚,请在查询分析器查询:

  DBCC SHOWCONTIG

  接着用 sp_spaceused 表 来查询reserved 的值和 data 的值 的差异可看来此表比较沉冗。

  2.复制你的转移旧表的数据到新表;

  SELECT * INTO 新表 FROM 旧表

  (如果你数据比较多,可能你会看到待压缩的数据库对应的mdf和ldf文件大小在猛增,没事在复制表)

  注:此命令不能把数据库结结构完全复制,需要您重新把旧表与新表对应的主键,自动增长值,索引,默认值等修改。

  3.更新一下;

  DBCC UPDATEUSAGE (0)

  4.把旧表删除,然后把新表的名字改成旧表的名字,这些可以到企业管理器里操作(注意重命名名时的提示);

  5.收缩mdf文件,也是最想要实现的一步;

  DBCC SHRINKDATABASE('库名')

  DBCC shrinkfile(2,0)

  DBCC UPDATEUSAGE (0)

  /*

  2 -> 要收缩的文件的fileid,对应sysfiles中的fileid。

  0 -> 收缩到初始大小

  */

  (注:红字是收缩你的数据库mdf文件,时间可能有点长;蓝字是收缩ldf文件;紫字是更新一下,非重要)

  完工,这时候你应该可以看到数据库的mdf文件大小变化差异,不说几十M,笔者的数据库就从6G收缩到1G左右,再次执行查询一些数据,明显快多了。

目录
相关文章
|
6月前
|
SQL Java 数据库
从0到1了解数据库—实现一个自己的数据库
从0到1了解数据库—实现一个自己的数据库
67 0
|
10天前
|
存储 数据管理 数据库
数据库三部分
数据库:用于存储数据的地方 数据库管理系统(DataBase Management System,DBMS):用于管理数据库的软件。是用户创建,管理和维护数据库时所使用的软件,位于用户和操作系统之间,对数据库进行统一管理。DBMS能定义数据存储结构,提供数据的操作机制,维护数据库的安全性,完整性和可靠性。 数据库应用程序:为了提高数据库系统的处理能力所使用的的管理数据库的软件补充。大多情况下,DBMS无法满足对数据管理的要求。数据库应用程序的使用可以满足对数据管理的更高要求,还可以使数据管理过程更加直观和友好。数据库应用程序负责与DBMS进行通信,访问和管理DBMS中存
ly~
|
1月前
|
存储 安全 搜索推荐
数据库的应用
数据库在众多领域中发挥着关键作用。在企业管理与运营方面,它支持客户关系管理和企业资源规划,帮助企业了解客户需求、优化资源配置;在金融领域,银行系统和证券交易依赖数据库保障安全性和准确性,进行风险评估;在医疗保健行业,电子病历管理和医疗资源管理通过数据库提高诊断准确性和资源利用率;在教育领域,学生信息管理和在线教育平台利用数据库优化教学管理,提供个性化学习体验;在电子商务中,商品管理和订单管理则确保了信息的准确性和高效处理。
ly~
38 1
|
6月前
|
SQL 数据库
数据库(五)
`UPDATE` SQL语句用于修改表中的数据。基本语法是:`UPDATE 表名 SET 属性名1=新值1,属性名2=新值2 WHERE 条件表达式`。例如,更新员工工资:`UPDATE emp SET salary=5000 WHERE id=1`。可以使用`+=`操作符增加值,如`UPDATE emp SET salary=salary+500 WHERE dept_id=2`。统计查询中,`COUNT`, `MAX`, `MIN`, `AVG`, `SUM`等函数用于数值、字符和日期的统计分析,注意`WHERE`子句不能直接使用聚集函数。
31 2
|
6月前
|
关系型数据库 MySQL 数据库
数据库(四)
`DELETE` 语句用于从表中移除数据。基本语法是 `DELETE FROM 表名 WHERE 条件表达式`,条件可选,若省略则删除所有数据。例如,`DELETE FROM emp WHERE dept_id = 10` 删除10号部门员工。`TRUNCATE` 表名更快,用于清空表,但不支持条件,且数据不可恢复。子查询可用于`CREATE TABLE AS SELECT`来复制表,或在`INSERT`, `UPDATE`语句中进行复杂操作,如更新特定区域员工的工资。
36 1
|
6月前
|
存储 数据库 数据库管理
什么是数据库
什么是数据库。
43 2
|
关系型数据库 Linux BI
数据库的一些知识
数据库的一些知识
50 0
|
6月前
|
存储 数据库 数据安全/隐私保护
数据库特点
数据库特点
70 9
|
6月前
|
存储 NoSQL 关系型数据库
数据库
数据库
126 5
|
数据库
数据库1-3章小总结
数据库1-3章小总结
49 0
下一篇
无影云桌面