广告
返回顶部
首页 > 资讯 > 数据库 >什么是SQL Server数据库收缩
  • 766
分享到

什么是SQL Server数据库收缩

2024-04-02 19:04:59 766人浏览 安东尼
摘要

这篇文章主要讲解了“什么是SQL Server数据库收缩”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“什么是sql Server数据库收缩”吧!1、为什么要

这篇文章主要讲解了“什么是SQL Server数据库收缩”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“什么是sql Server数据库收缩”吧!

什么是SQL Server数据库收缩

1、为什么要进行数据库收缩?

SQL Server 数据库采取预先分配空间的方法来建立数据库的数据文件或者日志文件,比如数据文件的空间分配了300MB,而实际上只占用了20MB空间,这样就会造成磁盘存储空间的浪费。可以通过数据库收缩技术对数据库中的每个文件进行收缩,删除已经分配但没有使用的页。从而节省服务器的存储的成本。

2、数据库收缩的原理

官方解释:收缩数据文件通过将数据页从文件末尾移动到更靠近文件开头的未占用的空间来恢复空间。在文件末尾创建足够的可用空间后,可以取消对文件末尾的数据页的分配并将它们返回给文件系统。

3、数据库收缩的限制和局限

收缩后的数据库不能小于数据库最初创建时指定的大小。 或是上一次使用文件大小更改操作(如 DBCC SHRINKFILE)设置的显式大小。

比如:如果数据库最初创建时的大小为 10 MB,后来增长到 100 MB,则该数据库最小只能收缩到 10 MB,即使已经删除数据库的所有数据也是如此。

不能在备份数据库时收缩数据库。 反之,也不能在数据库执行收缩操作时备份数据库。

4、数据库收缩的方式

4.1 收缩数据库 DBCC SHRINKDATABASE

介绍:收缩指定数据库中的数据文件大小。

语法格式:

DBCC SHRINKDATABASE      ( database_name [ , target_percent ]          [ , { NOTRUNCATE | TRUNCATEONLY } ]   )

参数说明:

  • database_name:是要收缩的数据库名称

  • target_percent:是数据库收缩后的数据库文件中所要的剩余可用空间百分比。

  • NOTRUNCATE:导致在数据库文件中保留所释放的文件空间。如果未指定,将所释放的文件空间释放给操作系统

  • TRUNCATEONLY:导致将数据文件中的任何未使用的空间释放给操作系统,并将文件收缩到上一次所分配的大小,从而减少文件大小,而不移动任何数据。不试图重新定位未分配页的行。使用 TRUNCATEONLY 时,忽略 target_percentis。

4.2 收缩数据库文件 DBCC SHRINKFILE

介绍:收缩当前数据库的指定数据或日志文件的大小,或通过将数据从指定的文件移动到相同文件组中的其他文件来清空文件,以允许从数据库中删除该文件。文件大小可以收缩到比创建该文件时所指定的大小更小。这样会将最小文件大小重置为新值。

语法格式:

DBCC SHRINKFILE   (      { file_name | file_id }       { [ , EMPTYFILE ]       | [ [ , target_size ] [ , { NOTRUNCATE | TRUNCATEONLY } ] ]      }  )  [ WITH NO_INFOMSGS ]

参数说明:

  • file_name:要收缩的文件的逻辑名称。

  • file_id:要收缩的文件的标识 (ID) 号。若要获得文件 ID,请使用 FILE_IDEX 系统函数,或查询当前数据库中的 sys.database_files 目录视图

  • target_size:用兆字节表示的文件大小(用整数表示)。如果未指定,则 DBCC SHRINKFILE 将文件大小减少到默认文件大小。默认大小为创建文件时指定的大小。

  • 注意:可以使用 DBCC SHRINKFILE target_size 减小空文件的默认大小。

例如,如果创建一个10MB 的文件,然后在文件仍然为空的时候将文件收缩为2 MB,默认文件大小将设置为2 MB。这只适用于永远不会包含数据的空文件。

  • EMPTYFILE:将指定文件中的所有数据迁移到同一文件组中的其他文件。由于数据库引擎不再允许将数据放在空文件内,因此可以使用 ALTER DATABASE 语句来删除该文件。

  • NOTRUNCATE:在指定或不指定 target_percent 的情况下,将已分配的页从数据文件的末尾移动到该文件前面未分配页。文件末尾的可用空间不会返回给操作系统,文件的物理大小也不会更改。因此,指定 NOTRUNCATE 时,文件看起来未收缩。

  • NOTRUNCATE 只适用于数据文件。日志文件不受影响。

  • TRUNCATEONLY:将文件末尾的所有可用空间释放给操作系统,但不在文件内部执行任何页移动。数据文件只收缩到最后分配的区。如果随 TRUNCATEONLY 指定了 target_size,则会忽略该参数。TRUNCATEONLY 只适用于数据文件。

  • WITH NO_INFOMSGS:取消显示所有信息性消息。

5、示例

-- 将TestDB数据库中的TestDB文件的大小收缩到20MB。  USE TestDB ;  Go  DBCC SHRINKFILE (TestDB, 20) ;  -- 将减小 UserDB 用户数据库中数据文件和日志文件的大小,以便在数据库中留出 10% 的可用空间  DBCC SHRINKDATABASE (TestDB, 30);   -- 清理数据库日志文件为2M  USE master  ALTER DATABASE TestDB SET RECOVERY SIMPLE WITH NO_WaiT  ALTER DATABASE TestDB SET RECOVERY SIMPLE --简单模式  USE TestDB  DBCC SHRINKFILE (N'TestDB_log' , 2, TRUNCATEONLY)     --设置压缩后的日志大小为2M,可以自行指定  USE master  ALTER DATABASE TestDB SET RECOVERY FULL WITH NO_WAIT  ALTER DATABASE TestDB SET RECOVERY FULL --还原为完全模式

感谢各位的阅读,以上就是“什么是SQL Server数据库收缩”的内容了,经过本文的学习后,相信大家对什么是SQL Server数据库收缩这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

您可能感兴趣的文档:

--结束END--

本文标题: 什么是SQL Server数据库收缩

本文链接: https://www.lsjlt.com/news/61588.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 什么是SQL Server数据库收缩
    这篇文章主要讲解了“什么是SQL Server数据库收缩”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“什么是SQL Server数据库收缩”吧!1、为什么要...
    99+
    2022-10-18
  • SQL SERVER数据库文件收缩
    --进入需要收缩的数据库,获取数据文件名,日志名,因为这些名字不一定和数据库名一致,但执行DBCC的时候又需要select * from sysfiles--截断事务日志,这个地方写数据库名,非文...
    99+
    2022-10-18
  • SQL SERVER中怎么收缩数据库日志
    今天就跟大家聊聊有关SQL SERVER中怎么收缩数据库日志,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 Microsoft OLE DB Pr...
    99+
    2022-10-18
  • SQL SERVER数据库如何实现收缩
    这篇文章将为大家详细讲解有关SQL SERVER数据库如何实现收缩,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 关于收缩的建议 不到万不得已,千万不要收缩数据库。收...
    99+
    2022-10-19
  • SQL Server数据文件收缩和查看收缩进度的方法是什么
    这篇文章主要介绍“SQL Server数据文件收缩和查看收缩进度的方法是什么”,在日常操作中,相信很多人在SQL Server数据文件收缩和查看收缩进度的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作...
    99+
    2023-07-05
  • SQL收缩数据库
    数据库收缩:个人理解,数据库在平凡长期操作的过程中会数据的日志文件永远是按一定的比例在增加,数据文件在数据库删除大量的数据后不一定减小磁盘空间,反复操作会出现空间浪费,所以收缩数据库将会得以体现。假设把数据...
    99+
    2022-10-18
  • sql server 2008以上数据库 收缩事务日志
    日志简介SQL Server中的事务日志无疑是SQL Server中最重要的部分之一。因为SQL SERVER利用事务日志来确保持久性(Durability)和事务回滚(Rollback)。从而还部分确保了...
    99+
    2022-10-18
  • sql server中怎么压缩备份数据库
    这篇文章将为大家详细讲解有关sql server中怎么压缩备份数据库,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。在SSMS中,新建查询窗口,执行数据库备份...
    99+
    2022-10-18
  • SQL Server数据库分页是什么
    这期内容当中小编将会给大家带来有关SQL Server数据库分页是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。需求  这里以SQLServer的示例数据库North...
    99+
    2022-10-18
  • sql server 2008 压缩备份数据库(20g)
    今天需要把一个省外项目的数据库从服务器上备份、拷贝到本机(跨地域传输数据库备份文件)。 连上VPN,通过远程桌面连接,连接上服务器,发现数据库文件已经有20G以上大小了。 文件太大,公司网络也不稳定,根本不...
    99+
    2022-10-18
  • 如何实现ms SQL server数据库备份、压缩与SQL数据库数据处理
    这篇文章主要讲解了“如何实现ms SQL server数据库备份、压缩与SQL数据库数据处理”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来...
    99+
    2022-10-18
  • SQL Server和MySQL数据库的区别是什么
    SQL Server和MySQL数据库的区别是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 1,优点分析:MYSQL短小精悍,...
    99+
    2022-10-18
  • SQL Server与Oracle数据库的区别是什么
    本篇文章为大家展示了SQL Server与Oracle数据库的区别是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。  SQL Server与Oracle数据库有...
    99+
    2022-10-18
  • Sql Server 压缩数据库日志文件的方法
    Sql Server 日志 _log.ldf文件太大,数据库文件有500g,日志文件也达到了500g,占用磁盘空间过大,且可能影响程序性能,需要压缩日志文件。 压缩日志脚本里要填的名字从要压缩的数据库属性里查看 脚本文...
    99+
    2022-11-24
    SqlServer压缩数据库 SqlServer日志文件
  • 不要收缩数据库文件的原因是什么
    这篇文章主要为大家展示了“不要收缩数据库文件的原因是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“不要收缩数据库文件的原因是什么”这篇文章吧。关于收缩数据文...
    99+
    2022-10-18
  • SQL Server与Oracle、DB2数据库的区别是什么
    本篇内容介绍了“SQL Server与Oracle、DB2数据库的区别是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读...
    99+
    2022-10-19
  • SQL Server数据库复制失败的原因是什么
    SQL Server数据库复制失败的原因是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。原因:在复制数据库时,必须先停止mssqlse...
    99+
    2022-10-18
  • 数据库中SQL Server四类典型代码是什么
    这篇文章将为大家详细讲解有关数据库中SQL Server四类典型代码是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。今天,我们就来看一下SQL Server方面的四类典型代码。ASP.N...
    99+
    2023-06-17
  • MS SQL SERVER 数据库日志压缩方法与代码是怎样的
    MS SQL SERVER 数据库日志压缩方法与代码是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。MSSQL性能是很不错的,但是数据库...
    99+
    2022-10-19
  • ​ SQL SERVER数据备份方案是什么
    这篇文章主要介绍  SQL SERVER数据备份方案是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!SQL SERVER数据备份方案SQL SERVER数据库的备份方法...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作