收缩数据库就是把数据库不需要或者没有用的东西进行资源回收,简单的说就是数据库压缩,比如你数据库的很大,你收缩下数据库就不会有那么大了,还有一个办法就是删除数据库日志,具体代码:
DUMP TRANSACTION [YZ] WITH NO_LOG --清空日志
BACKUP LOG [YZ] WITH NO_LOG --截断事务日志
DBCC SHRINKDATABASE([YZ]) --压缩数据库
DBCC UPDATEUSAGE ([YZ]) --报告和更正 sysindexes 表的不正确内容
exec sp_detach_db @dbname='数据库名'
exec sp_attach_single_file_db @name='数据库名',@hysname='C:\Program Files\Microsoft SQL Server\MSSQL1\MSSQL\Data\数据库名mdf'
你用数据库管理器选中数据库,先分离,然后再附加,然后再点收缩,收缩的时候先收缩日志文件,一般能收缩很多,记得要填写数字啊,比如上面提示能收缩为0,你就填个5兆,这样预留一点空间,而且很快,收缩完日志文件之后再收缩数据库 同理比最小能收缩量大几兆就可以了,但是收缩数据库比较慢 需要很多时间
数据库收缩的工作原理是:清理空白空间和日志来实现。
空白空间:删除表时,数据库的空间不会自动缩小,随着建的表越来越多,删除 ***
作越来越多时候,数据文件就会越来越多。
日志:是记录你历史 *** 作的,没用的都可以清除。
收缩数据库
数据库中的每个文件都可以通过删除未使用的页的方法来减小。尽管数据库引擎会有效地重新使用空间,但某个文件多次出现无需原来大小的情况后,收缩文件就变得很有必要了。数据和事务日志文件都可以减小(收缩)。可以成组或单独地手动收缩数据库文件,也可以设置数据库,使其按照指定的间隔自动收缩。
文件始终从末尾开始收缩。例如,如果有个5GB的文件,并且在DBCCSHRINKFILE语句中将target_size指定为4GB,则数据库引擎将从文件的最后一个1GB开始释放尽可能多的空间。如果文件中被释放的部分包含使用过的页,则数据库引擎先将这些页重新放置到文件的保留部分。只能将数据库收缩到没有剩余的可用空间为止。例如,如果某个5GB的数据库有4GB的数据,并且在DBCCSHRINKFILE语句中将target_size指定为3GB,则只能释放1GB。
自动数据库收缩
将AUTO_SHRINK数据库选项设置为ON后,数据库引擎将自动收缩具有可用空间的数据库。此选项可以使用ALTERDATABASE语句来进行设置。默认情况下,此选项设置为OFF。数据库引擎会定期检查每个数据库的空间使用情况。如果某个数据库的AUTO_SHRINK选项设置为ON,则数据库引擎将减少数据库中文件的大小。该活动在后台进行,并且不影响数据库内的用户活动。
将数据库设置为自动收缩
ALTERDATABASE(Transact-SQL)
手动数据库收缩
您可以使用DBCC语句或DBCCSHRINKFILE语句来手动收缩数据库或数据库中的文件。如果DBCC或DBCCSHRINKFILE语句无法回收日志文件中的所有指定空间,则该语句将发出信息性消息,指明必须执行什么 *** 作以便释放更多空间。有关收缩日志文件的详细信息,请参阅收缩事务日志。
在该过程中任意时间都可停止DBCC和DBCCSHRINKFILE *** 作,所有已完成工作都将保留。
在使用DBCC语句时,您无法将整个数据库收缩得比其初始大小更小。因此,如果数据库创建时的大小为10MB,后来增长到100MB,则该数据库最小只能收缩到10MB,即使已经删除数据库的所有数据也是如此。
但是,使用DBCCSHRINKFILE语句时,可以将各个数据库文件收缩得比其初始大小更小。必须对每个文件分别进行收缩,而不能尝试收缩整个数据库。
以上就是关于收缩数据库是什么意思全部的内容,包括:收缩数据库是什么意思、如何收缩sqlserver数据库、SQL数据库收缩的工作原理是什么(sql收缩数据库命令)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)